Router | url() で action を省略すると action 値が期待通りにならない場合がある

48 views
Skip to first unread message

custar

unread,
Jan 23, 2010, 2:12:58 AM1/23/10
to CakePHP-ja
下記 URL をもつページで

http://localhost/routing/users/link

以下の $html->link() による url の生成をやっていると、
(1) が予想外の結果になってしまった。


(1) $html->link('users', array('controller' => 'users'))

期待 http://localhost/routing/users
結果 http://localhost/routing/users/link ................... x

(2) $html->link('tasks', array('controller' => 'tasks'))

期待 http://localhost/routing/tasks
結果 http://localhost/routing/tasks

これは、下記 (3) が働いたから。


router.php
function url($url = null, $full = false) {
...
if (empty($url['action'])) {
if (empty($url['controller']) ||
$params['controller'] === $url['controller'])
{
$url['action'] = $params['action']; .................. (3)
}
else {
$url['action'] = 'index';
}
}

:action が省略されており、
(1) と、元々開いたページの :controller が "users" で同じなので、
(3) が働く結果になっている。

気が付かなかった。


(1) で :action を指定する以外に、何か方法あるのかな?

Reply all
Reply to author
Forward
0 new messages