当我做
print_r(Yii::app()->request->baseUrl)
Run Code Online (Sandbox Code Playgroud)
我得到一个空字符串.Yii论坛上的帖子说默认为空白.如何更改其默认值以便我可以使用绝对URL?
我想在一条共同路径下分组路径.我在Yii2文档中发现这可以通过GroupUrlRule()
类来实现.我无法理解在哪里设置它.我试图把它作为一个规则urlManager
,confing/web.php
但没有任何事情发生.
来自Laravel和Rails的背景我发现很难弄清Yii2规则是如何工作的.
我正在寻找以下网址模式:
ArticlesController
定义如下:
<?php
namespace app\controllers;
class ArticlesController extends \yii\web\Controller
{
public function actionIndex()
{
return $this->render('index');
}
public function actionView()
{
return $this->render('index');
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我尝试过:
'urlManager' => [
'showScriptName' => false,
'enablePrettyUrl' => true,
'rules' =>
[
'articles/view' => 'article/view'
],
],
Run Code Online (Sandbox Code Playgroud)
我更感兴趣的是将我的模式重定向到controller @方法.
我在视图中执行以下操作:
<li><a href='<? Yii::app()->controller->createUrl('sources'); ?>'>sources</a></li>
Run Code Online (Sandbox Code Playgroud)
但是'sources'没有附加到路径,而是代码只返回当前控制器的路径.
有谁能说明为什么这可能是我?代码在一个模块中.
我的网址规则如下:
'rules'=>array(
'<controller:\w+>/<id:\d+>'=>'<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
),
Run Code Online (Sandbox Code Playgroud) 我在Yii框架中的urlManager中有这些默认路由规则:
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName'=>false,
'rules'=>array(
'<controller:\w+>/<id:\d+>'=>'<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
),
),
Run Code Online (Sandbox Code Playgroud)
我有一个SiteController.php
所有的/site/
要求.我现在需要的是将/home
请求重定向到/site/index
.
我试过添加这个数组项:
'home' => '/site/index',
'/home' => 'site/index',
Run Code Online (Sandbox Code Playgroud)
而且他们都没有工作.
有谁能解决这个问题?
早上好,
我的网站还有另一个问题.我开发了一个类似于yellowpages.com的网站(不是那么相似但只是想知道)
现在他们让我用SEO和网址重写做一些疯狂的事情.
我将从我的main.php开始
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName'=>false,
'rules'=>array(
'surf/category/<id:[0-9]+>/page/<page:[0-9]+>'=>'naviga/categoria/',
'surf/subcategory/<id:[0-9]+>/page/<page:[0-9]+>'=>'naviga/sottocategoria/',
'surf/page/<page:[0-9]+>'=>'surf/',
'contact' =>'site/contact/',
'write-mail/<id:[0-9]+>' =>'site/contact/',
'privacy' =>'site/page/view/privacy',
'register'=>'site/page/view/register',
'<controller:\w+>/<id:\d+>'=>'<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
),
),
Run Code Online (Sandbox Code Playgroud)
现在请求..... T_T他们想要的网址将是这样的:
http://domain.com/category-name/而不是http://domain.com/surf/category/3(例如)
http://domain.com/category-name/sub-category-name/而不是http://domain.com/surf/subcategory/3
http://domain.com/category-name/sub-category-name/society-name/而不是http://domain.com/detail/2
显然,链接的其余部分必须使用最后3个控制器规则....有人可以帮助我??? 我处在一个非常紧张的地方......如果我找不到周二的解决方案,他们会踢我的屁股.....
T_T
在此先感谢您的帮助.