2016-06-13 15 views
1

PagesControllerの別のアクションにリンクする必要があります。CakePHP 3:PagesControllerの任意のアクションへのリンクは同じアクションを開きます

私は多くの静的なページを作成していると私はそれがデフォルトdisplayアクションを開く代わりに、開口部contact.ctpwww.mysite.com/pages/contactにアクセスすると、そのために私は今、

public function contact(){ 

} 

のようなアクションを定義しています。

routes.phpファイルが

Router::defaultRouteClass('DashedRoute'); 

Router::scope('/', function (RouteBuilder $routes) { 

    $routes->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']); 

    $routes->connect('/pages/*', ['controller' => 'Pages', 'action' => 'display']); 

    $routes->fallbacks('DashedRoute'); 
}); 

Plugin::routes(); 

がどのように私は、静的なページやPagesControllerの他actionsにアクセスすることができます含まれていますか?

答えて

1
$routes->connect('/pages/:action/*', ['controller' => 'Pages']); 

これで、別の操作を呼び出すことができます。例えば

www.mysite.com/pages/contact

www.mysite.com/pages/about www.mysite.com/pages/someaction

+0

ありがとうJacek、これは私が欲しいものです。出来た。 –

+0

静的ページのアクションを定義する必要がある場合は、静的ページではありません。 –

+0

@AlexStallenあなたが正しいです、私は含まれている統計ページにこのソリューションを使用してデータベースに保存され、管理パネルを介して変更することができます。 –

1

PagesControllerのデフォルトルーティングでは、すべてをdisplayアクションに誘導します。

追加のアクションを追加するには、これらを具体的にルーティングする必要があります。

$routes->connect('/pages/contact', ['controller' => 'Pages', 'action' => 'contact']); 

あるいは、あなたはすべてがdisplay作用を介して行きたくない場合は、そこにすべてを指示しroutes.php内の特定の行を削除してください。 CakePHPは、/pages/で始まるものをPagesControllerに自動ルーティングし、スラッシュの後の何かは適切なアクションです。

+0

ありがとうウォーレン、あなたの答えは+1。これは良い答えかもしれませんが、将来私はそれが必要かもしれないので、私は行全体を削除したくありません。 –

0

あなたはビューファイルsrcを作る場合/Template/Pages/contact.ctp URLを使用してアクセスできますhttp://example.com/pages/contact

routes.phpでanythinを変更する必要はありません。 PagesControllerでメソッドを作成する必要はありません。これは、静的コンテンツを提供するためのシンプルでオプションのコントローラです。

関連する問題