0

この次の行のようなものが可能かどうかを知りたいのですが、いくつかのアクションを除外しています。管理、追加、削除などを行いたいので、表示アクションではなく、それぞれのアクションに移動します。これらのルールを事前に明示的に指定することで可能であることはわかっていますが、これらのルールがかなりあると、ルーター ファイルで適切に表示されません。

 Router::connect('/paginas/manage', array('controller' => 'paginas', 'action' => 'manage')); 
 ...
 Router::connect('/paginas/*', array('controller' => 'paginas', 'action' => 'display'));

したがって、目的は最初の行を削除することです...

ありがとう。

4

1 に答える 1

1

基本的に私が思うPagesControllerであるPaginasControllerでこのようなことをしてください.: ....

public function display(){
// Assuming default behavior of cakephp here
...
if (!empty($path[0])) {
    $page = $path[0];
    if(
        method_exists($this, $page) &&
        !in_array(
            $page,
            array(
                // Methods that never should be executed in this controller are going in here
            )
        )
    ){
        $this->{$page}();
    }
}
}

これにより、コントローラーで特定のメソッドが実行されます。そこで終了して、後で動作を停止させることができます。ただし、AppController の親メソッドにもアクセスできるため、これは少し危険かもしれません。

ここで説明されている Router::connect() ルールの 1 つを正確に 2 つ必要とするもう 1 つの方法: http://api.cakephp.org/class/router#method-Routerconnect

Router::connect(
  'paginas/:action/*',
  array(),
  array('paginas' => '(manage|add|delete)')
);

これが最初に続き、もう一方が続きます。テストしたことはありません!

ページを編集するためのパブリックメソッドが必要な理由はわかりませんが。これらを使用して残りから分離します: http://book.cakephp.org/2.0/en/development/routing.html#prefix-routing

私が考えていることを実行しようとしている場合は、PagesController を使用してページの管理を書き始めないことをお勧めします。「ページ」はケーキの多かれ少なかれ予約語であり、これらの単語を使用すると大きな問題が発生する可能性があります(「ファイル」モデルを含む「ファイル」プラグインを一度作成しました。ケーキ1.2または1.3以降のように時間の無駄です実際には、ファイル操作を処理する「ファイル」クラスです)。「ContentPage」などの新しいものを作成します。その場合、あなたは節約側にいます。あなたのコントローラーは「Pages」という名前でさえないので、この段落はおそらく役に立たないかもしれませんが、私は長いものを削除したくないので、この情報が一度必要になった場合に備えて残します.

また、プログラミング言語を変更しないことをお勧めします. ルートには好きな名前を付けることができますが、ケーキも同様であるため、クラス名は英語のままにする必要があります。

こんにちは func0der

于 2012-11-15T22:21:02.437 に答える