私は次のコードを持っていますroutes.php
:
Router::connect('/c/details/:id/:slug',
array('controller' => 'cars'),
array('pass' => array('id', 'slug'))
);
アクセスしようとするhttp://domain.com/c/details/123/abc
と動作します。ただし、削除するとabc
(つまり、スラッグ)、CakePHPはアクション123
(アクションではなくID)にアクセスしようとします。
Error: The action 123 is not defined in controller CarsController
/c/details/:id/:slug/:action/*
1.2(ええ、かなり古い)から2.2.1にアップグレードする前に持っていたものを使用し、それが正常に機能していた場合、CakePHP123
は、スラッグがあるかどうかに関係なく、アクションにアクセスしようとします。
スラッグのないURLは、CakePHPをアップグレードする前は常に機能し、コントローラーにあるコードを使用すると、URLにスラッグがない場合、正しいURLにリダイレクトされます。
編集:チェックしたところ、ナメクジを提供しないと全体がシフトしているようです。c
無視され、details
コントローラーに123
なり、アクションになります。
[request] => CakeRequest Object
(
[params] => Array
(
[plugin] =>
[controller] => details
[action] => 123
[named] => Array()
[pass] => Array()
[isAjax] =>
)
正しいのはいつですか、そしてそれは私がナメクジを提供した場合に私が得るものです:
[request] => CakeRequest Object
(
[params] => Array
(
[plugin] =>
[controller] => cars
[action] => index
[named] => Array()
[pass] => Array
(
[0] => 123
[1] => abc
)
[id] => 123
[slug] => abc
[isAjax] =>
)
今この問題を引き起こしている可能性のあるアイデアはありますか?