您好所有的zend 编码员。我是 zend 的新手,通过 DB 为管理页面做代码。我想对这些页面使用 URL,如下所示:
www.domainname.com/about-us
www.domainname.com/contact-us ...
表名是 'cms_page' & 属性是:
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`page_key` varchar(255) NOT NULL,
`content` longtext NOT NULL,
`added_on` datetime NOT NULL,
我已经为此做了研发,这里是代码:
// 在 module.config.php 中
'导航' => 数组(
'默认' => 数组(
'帐户' => 数组(
'标签' => '帐户',
'路线' => '节点',
'参数' => 数组(
'id' => '2',
),
'页面' => 数组(
'家' => 数组(
'标签' => '仪表板',
'路线' => '节点',
'参数' => 数组(
'id' => '1',
'链接' => '/测试'
),
),
'登录' => 数组(
'标签' => '登录',
'路线' => '节点',
'参数' => 数组(
'id' => '5',
'链接' => '/关于我们'
),
),
'注销' => 数组(
'标签' => '退出',
'路线' => '节点',
'参数' => 数组(
'id' => '3',
),
),
),
),
),
),
'路由器' => 数组(
'路线' => 数组(
'家' => 数组(
'类型' => 'Zend\Mvc\Router\Http\Literal',
'选项' => 数组(
'路线' => '/',
'默认值' => 数组(
'控制器' => '应用程序\控制器\索引',
'动作' => '索引',
),
),
),
'节点' => 数组(
'类型' => '应用\路由器\别名',
'选项' => 数组(
'路由' => '/node[/:id]',
'约束' => 数组(
'id' => '[0-9]+'
),
'默认值' => 数组(
'__NAMESPACE__' => '应用程序\控制器',
'控制器' => '索引',
'动作' => '索引',
'id' => '0'
),
),
'may_terminate' => 真,
),
),
),
// 在 Module.php 中
公共函数 onBootstrap(MvcEvent $e)
{
$app = $e->getApplication();
$sm = $app->getServiceManager();
$sm->get('翻译器');
$sm->get('viewhelpermanager')->setFactory('controllerName', function($sm) use ($e) {
$viewHelper = 新视图\Helper\ControllerName($e->getRouteMatch());
返回 $viewHelper;
});
$eventManager = $e->getApplication()->getEventManager();
$moduleRouteListener = new ModuleRouteListener();
$moduleRouteListener->attach($eventManager);
$sm->setFactory('Navigation', 'Zend\Navigation\Service\DefaultNavigationFactory', true);
$alias = $sm->get('Application\Router\Alias');
$nav = $sm->get('导航');
$alias->setNavigation($nav);
}
公共函数 getServiceConfig()
{
返回数组(
'工厂' => 数组(
'应用\路由器\别名' => 函数($sm){
$alias = new \Application\Router\Alias('/node[/:id]');
返回$别名;
},
)
);
}
// 应用程序\src\应用程序\路由器
命名空间应用\路由器;
使用可遍历;
使用 Zend\Mvc\Router\Exception;
使用 Zend\Stdlib\ArrayUtils;
使用 Zend\Stdlib\RequestInterface 作为请求;
使用 Zend\Mvc\Router\Http;
使用 Zend\Mvc\Router\Http\Segment 作为 Segment;
类别名扩展段
{
私人静态 $_navigation = null;
公共函数匹配(请求 $request,$pathOffset = null)
{
$uri = $request->getUri();
$path = $uri->getPath();
$items = self::$_navigation->findAllBy('route', 'node');
$参数=空;
if($items != null){
$t = sizeof($items);
for ($i=0; $i getParams();
if (isset($params['link']) && $params['link']==$path){
echo $uri->setPath('/'.$item->getRoute().'/'.$params['id']);
$request->setUri($uri);
休息;
}
}
}
返回父级::match($request, $pathOffset);
}
公共函数 setNavigation($navigation){
自我::$_navigation = $导航;
}
受保护的函数 buildPath(array $parts, array $mergedParams, $isOptional, $hasChild, array $options)
{
if(isset($mergedParams['link'])){
返回 $mergedParams['link'];
}
return parent::buildPath($parts, $mergedParams, $isOptional, $hasChild, $options = array());
}
}
当我在浏览器上运行此 url www.domainname.com/about-us 时出现 404 错误。请帮助我哪里错了,需要添加或编辑哪些代码?