在CakePHP中为每个URL添加前缀的最简洁方法是什么,比如语言参数?
http://example.com/en/controller/action
http://example.com/ru/admin/controller/action
Run Code Online (Sandbox Code Playgroud)
它需要使用"真实"前缀admin,并且理想情况下/controller/action可以将裸URL 重定向到/DEFAULT-LANGUAGE/controller/action.
它现在正在为我提供一个改装的应用程序,但它有点像黑客,我需要在大多数链接中手动包含语言参数,这是不好的.
所以问题是双重的:
Router::connect('/:controller/:action/*', ...) 应该隐含地包含前缀.$this->params['lang']或类似于要评估的地方可用AppController::beforeFilter().Router::url()如果没有明确指定,如何自动在URL中包含前缀?
Router::url(array('controller' => 'foo', 'action' => 'bar')) 应该回来 /en/foo/barController::redirect(),Form::create()甚至Router::url()直接需要具有相同的行为,因此覆盖每个单独的功能实际上并不是一种选择.Html::image()例如,应该生成一个无前缀的URL.似乎可以调用以下方法Router::url.
Controller::redirectController::flashDispatcher::__extractParams 通过 Object::requestActionHelper::urlJsHelper::load_JsHelper::redirect_View::uuid,但仅适用于哈希生成在那些看起来似乎需要覆盖控制器和助手方法,我可以没有JsHelper.我的想法是编写一个通用函数,AppController或者只是在bootstrap.php处理参数插入.重写的Controller和Helper方法将使用此功能,如果我想手动调用,则会使用此功能Router::url.这还够吗?