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 内

'ナビゲーション' => 配列(
        'デフォルト' => 配列(
            'アカウント' => 配列(
                'ラベル' => 'アカウント',
                'ルート' => 'ノード',
                'params' => 配列(
                            'id' => '2',
                            )、
                'ページ' => 配列(
                    'ホーム' => 配列(
                        'ラベル' => 'ダッシュボード',
                        'ルート' => 'ノード',
                        'params' => 配列(
                                    'id' => '1',
                                    'リンク' => '/テスト'
                                    )、

                    )、
                    'ログイン' => 配列(
                        'ラベル' => 'サインイン',
                        'ルート' => 'ノード',
                        'params' => 配列(
                                    'id' => '5',
                                    'link' => '/about-us'
                                    )、

                    )、
                    'ログアウト' => 配列(
                        'ラベル' => 'サインアウト',
                        'ルート' => 'ノード',
                        'params' => 配列(
                                    'id' => '3',
                                    )、
                    )、
                )、
            )、
        )、
    )、
'ルーター' => 配列(
        'ルート' => 配列(

            'ホーム' => 配列(
                'type' => 'Zend\Mvc\Router\Http\Literal',
                'オプション' => 配列(
                    'ルート' => '/',
                    'デフォルト' => 配列(
                        'コントローラー' => 'アプリケーション\コントローラー\インデックス',
                        'アクション' => 'インデックス',
                    )、
                )、
            )、
            'ノード' => 配列(
                'type' => 'Application\Router\Alias',
                'オプション' => 配列(
                    'ルート' => '/node[/:id]',
                    '制約' => 配列(
                        'id' => '[0-9]+'
                    )、
                    'デフォルト' => 配列(
                        '__NAMESPACE__' => 'アプリケーション\コントローラー',
                        'コントローラー' => 'インデックス',
                        'アクション' => 'インデックス',
        'id' => '0'
                    )、
                )、
                'may_terminate' => true,
            )、

        )、
    )、

// Module.php 内


 パブリック関数 onBootstrap(MvcEvent $e)
    {
       $app = $e->getApplication();
       $sm = $app->getServiceManager();
       $sm->get('翻訳者');
       $sm->get('viewhelpermanager')->setFactory('controllerName', function($sm) use ($e) {
        $viewHelper = new View\Helper\ControllerName($e->getRouteMatch());
        $viewHelper を返します。
    });

        $eventManager = $e->getApplication()->getEventManager();
        $moduleRouteListener = 新しい 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()
    {
        配列を返します(
    'factories' => 配列(
            'Application\Router\Alias' => function($sm) {
                $alias = new \Application\Router\Alias('/node[/:id]');
                $エイリアスを返します。
            }、
          )
    );
}   
// Application\src\Application\Router

名前空間 Application\Router;

Traversable を使用します。
Zend\Mvc\Router\Exception を使用します。
Zend\Stdlib\ArrayUtils を使用します。
Zend\Stdlib\RequestInterface をリクエストとして使用します。
Zend\Mvc\Router\Http を使用します。
Zend\Mvc\Router\Http\Segment をセグメントとして使用します。

クラス エイリアスはセグメントを拡張します
{
    プライベート静的 $_navigation = null;

   public function match(Request $request, $pathOffset = null)
    {
        $uri = $request->getUri();
        $path = $uri->getPath();

        $items = self::$_navigation->findAllBy('ルート', 'ノード');
        $params = null;

        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);
                    壊す;
                }
            }
        }

        親を返します::一致($request、$pathOffset);
    }

    パブリック関数 setNavigation($navigation){
        self::$_navigation = $navigation;
    }

保護された関数 buildPath(配列 $parts、配列 $mergedParams、$isOptional、$hasChild、配列 $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