Hy stackoverflow! 我试图用Yii 1.1.14(这是一个旧网站)将表单制作成一个外部页面。
我在我的视图中创建了一个目录,调用signinPartners
并在此文件中调用了一个php文件signin
。
我还创建了一个控制器:
class SigninPartnerController extends Controller
{
public function actionSignin(){
$this->render('/signin');
}
}
他通过以下方式呈现我的配置中定义的路由/signin
return array(
'' => 'index',
'signin' => 'signinPartners/signin',
);
但是当我尝试网址http://mylocalserver/signin
时,网站会发回Error 404 Unable to resolve the request « signin-partners/signin ».
。
这真是令人不安,因为我的网站上还有其他网址,他们的工作方式相同而不会出现错误404.我不知道我错过了什么......有人可以帮忙吗?
my urlManager:
'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可以回答这个问题!
ANSWERED
答案 0 :(得分:0)
尝试在signinPartners中添加-
。
'signin-partners/signin'
答案 1 :(得分:0)
我的案例中的问题是操作,我视图中包含页面和路由规则的目录名称。
首先,我从以下位置更新路线规则:
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');
}
我使用新目录名更改路径。