0

私はリンクを使って CakePHP を実験してきましたが、パラメーターを渡すだけの場合もあれば、名前を前に付けて渡す場合もあることに気付きました。2 つのリンクの違いは何ですか。

$this->Html->link('Edit', array('controller'=>'users','action'=>'edit', $user['User']['id']));

$this->Html->link('Edit', array('controller'=>'users','action'=>'edit', 'id'=> $user['User']['id']));

それらが作成する URL は、ルーティング機能のためにほとんど無関係ですが、最初の例では、次のようにコントローラー メソッドで直接 id にアクセスします。

public function edit( $id )

しかし、名前付きパラメーターについては、ルーターを使用して物理的に渡す必要があります!

誰かがこれについてもう少し光を当てることができますか? 違いは何ですか、そしてそれぞれをいつ使用するのですか...

また、注目に値するのは、CakePHP 3.0 では名前付きパラメーターが削除されていることです。これは、両方のリンクが引き続き機能するため、奇妙に思われます...これについて何か考えはありますか?

4

1 に答える 1

2

名前付きパラメーターをルーター経由で渡す必要はありません。彼らは単に終わります

$this->request->named[...] // or
$this->request['named'][...]; // or
$this->request->params['named'][...]

それらはクエリ文字列パラメーターを優先して削除されます: "?foo=bar&..." は (既にあるように!) 経由で利用可能になります

$this->request->query('foo'); // >= 2.3
$this->request->query['foo']; // <= 2.2

渡されたものも常に経由で利用可能になります

$this->request->pass[...]; // or
$this->request['pass'][...]; // or
$this->request->params['pass'][...];

しかし、あなたはすべてhttp://book.cakephp.org/2.0/en/controllers/request-response.htmlを読んでいることがわかったはずです

渡された1回と名前付き/クエリの主な違いは、後者はより交換可能であるのに対し、渡された1回は直接アクセスできるためです。

public function xyz($one, $two, $three)

その場合、より深く統合され、渡された固有の情報に使用する必要があります。名前付き/クエリのものには特定の順序がなく、ページネーションやその他の流暢な情報に似ています。

私にとって、渡されたパラメーターは実際にサイトを変更しますが(独自の正規リンクなど)、他の人はそれを行わず、名前付き/クエリパラメーターなしでサイトに「正規リンク」を戻します(ページネーションなどでコンテンツの重複を避けるため)。

于 2012-11-16T20:17:41.053 に答える