module, controller及action,作法如下:
application.ini:
resources.db.adapter = "PDO_MySQL"
resources.db.params.host = your db server ip
resources.db.params.username = your db server account
resources.db.params.password = your db server password
resources.db.params.dbname = db name
Bootstrap.php:
$front = Zend_Controller_Front::getInstance();$router = $front->getRouter();$name = substr($_SERVER['REQUEST_URI'], 1); #note 1$number = strpos($name, '/');if($number !== false){ $name = substr($name, 0, $number)}$application = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini');$app = $application->getOptions();$db = new Zend_Db_Adapter_Mysqli(
array(
'host' => $app['resources']['db']['params']['host'],
'username' => $app['resources']['db']['params']['username'],
'password' => $app['resources']['db']['params']['password'],
'dbname' => $app['resources']['db']['params']['dbname']
));
$sql = 'select {fields} from {table} where {field} = ?';$stmt = new Zend_Db_Statement_Mysqli($db, $sql);$stmt->;execute(array($name));$row = $stmt->fetch();
$route = new Zend_Controller_Router_Route(
':param/*', #note 2
array(
'module' => {module you want to redirect},
'controller' => {controller you want to redirect},
'action' => {action you want to redirect},
{variable} => {variable value}
)
);$router->addRoute('number', $route);
note 1:
$_SERVER['REQUEST_URI']會取得hostname以後之參數, e.g. http://www.blogger.com/post-edit.g?blogID=!@#?% 會回傳 '/post-edit.g?blogID=!@#?%'若有在該參數後再加上其它參數的需求,所以才會用strpos檢查url是否有多個參數, e.g. http://www.blogger.com/pattern/type/1,所以在note 2處需要該設定方式
note 2:
':param/*' :param即為所需決定render哪一個頁面的參數,而之後的*字號則可輸入可不輸入, e.g. /pattern, /pattern/, /pattern/type/1都會render到同一個module, controller, action內。若需要在該action內取得此param值, 使用$this->getRequest()->getParam('param');即可。
沒有留言:
張貼留言