0

您好所有的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 错误。请帮助我哪里错了,需要添加或编辑哪些代码?

4

1 回答 1

0

您可以使用 aZend_Controller_Router_Route作为替代方案。这是有关如何执行此操作的快速教程:

http://www.codexperience.co.za/post/hiding-url-parameters-names-using-zend-routers

于 2013-08-02T15:19:58.933 回答