【问题标题】:a route doesnt work (yii)一条路线不起作用(yii)
【发布时间】:2018-01-17 09:28:54
【问题描述】:

你的堆栈溢出! 我正在尝试使用 Yii 1.1.14 将表单制作成外部页面(这是一个旧网站)。

我在视图中创建了一个目录调用signinPartners,并在这个目录中创建了一个php 文件调用signin

我还创建了一个控制器:

class SigninPartnerController extends Controller
{
    public function actionSignin(){
        $this->render('/signin');
    }
}

他渲染了我在我的配置中定义的路由/signin

return array(
    '' => 'index',
    'signin' => 'signinPartners/signin',
);

但是当我尝试使用 URL http://mylocalserver/signin 时,网站会发回 Error 404 Unable to resolve the request « signin-partners/signin ».

这真的很令人不安,因为我的网站上还有其他 URL,它们以相同的方式工作而不会引发错误 404。我不知道我错过了什么......有人可以帮忙吗?

我的网址管理器:

'urlManager'=>array(
    'urlFormat'=>'path',
    'showScriptName' => false, // do not display index.php in the url
    'urlSuffix' => '/',
    'rules' => $routesRules, //this variable contains the array defined above
),

我也检查了我的运行时间:

2018/01/17 11:12:16 [error] [exception.CHttpException.404] exception 'CHttpException' with message 'Impossible de résoudre la requête « signinPartners/signin ».' in D:\Windows\Windows\CommonFiles\wamp64\www\MoovTime-Conso\library\Yii\web\CWebApplication.php:286
Stack trace:
#0 D:\Windows\Windows\CommonFiles\wamp64\www\MoovTime-Conso\library\Yii\web\CWebApplication.php(141): CWebApplication->runController('signinPartners...')
#1 D:\Windows\Windows\CommonFiles\wamp64\www\MoovTime-Conso\library\Yii\base\CApplication.php(183): CWebApplication->processRequest()
#2 D:\Windows\Windows\CommonFiles\wamp64\www\MoovTime-Conso\public\frontend\index.php(36): CApplication->run()
#3 {main}
REQUEST_URI=/signin
---

(异常信息是法语,意思是Unable to resolve the request « signin-partners/signin »

好的,重大更新,我尝试使用routes.php,但我意识到我的控制器名称与signinPartners 不匹配。所以,我更新了路由规则:

return array(
    '' => 'index',
    'signin' => 'signinPartner/signin',
);

现在,我们有一个新错误:Controller can't find the view « /signin ».。 有帖子Controller can't find the view in Yii可以回答这个问题!

已回答

【问题讨论】:

  • 你使用的是哪个版本的 yii?
  • Yii 1.1.14(我更新帖子)

标签: yii routes


【解决方案1】:

尝试在 signinPartners 中添加-

'signin-partners/signin'

【讨论】:

  • 这不起作用,我重命名了路由和目录,新名称出现同样的错误
【解决方案2】:

在我的例子中,问题是操作,我的视图中包含页面和路由规则的目录名称。

首先,我从以下位置更新路由规则:

return array(
    '' => 'index',
    'signin' => 'signinPartners/signin',
);

到:

return array(
    '' => 'index',
    'signin' => 'signinPartner/signin', // controlerName/actionName
);

控制器名称错误。

第二次,为了与控制器的名称相匹配,我只是将views 调用signinPartners 中的目录重命名为signinPartner(仅用于可读性)。

最后我更新了actionSignin 的动作:

public function actionSignin(){
    $this->render('/signin');
}

对于:

public function actionSignin(){
    $this->render('/signinPartner/signin');
}

我用新目录名称更改路径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-14
    • 2016-07-01
    • 2015-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-08
    • 1970-01-01
    相关资源
    最近更新 更多