相关疑难解决方法(0)

为CakePHP中的每个URL添加前缀

在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/bar
    • 由于Controller::redirect(),Form::create()甚至Router::url()直接需要具有相同的行为,因此覆盖每个单独的功能实际上并不是一种选择.Html::image()例如,应该生成一个无前缀的URL.

似乎可以调用以下方法Router::url.

  • Controller::redirect
  • Controller::flash
  • Dispatcher::__extractParams 通过 Object::requestAction
  • Helper::url
  • JsHelper::load_
  • JsHelper::redirect_
  • View::uuid,但仅适用于哈希生成

在那些看起来似乎需要覆盖控制器和助手方法,我可以没有JsHelper.我的想法是编写一个通用函数,AppController或者只是在bootstrap.php处理参数插入.重写的Controller和Helper方法将使用此功能,如果我想手动调用,则会使用此功能Router::url.这还够吗?

routing cakephp prefix

20
推荐指数
2
解决办法
2万
查看次数

标签 统计

cakephp ×1

prefix ×1

routing ×1