Yii2中Hyperlink Not Found问题解决:页面跳转404报错处理方案
解决Yii中Html::a跳转出现Page Not Found的问题
问题场景
我在views/buku/index.php里写了这段代码,想跳转到views/buku/utama.php页面:
<?= Html::a('Link', ['/buku/utama']) ?>
结果点击链接直接弹出Page Not Found错误,折腾了一会儿终于解决了,把方法整理出来。
问题根源
很多刚接触Yii的朋友容易踩这个坑:Yii的路由是基于控制器+动作的,不是直接映射视图文件。['/buku/utama']这个路由对应的是BukuController里的actionUtama()方法,而不是直接指向utama.php视图。报错的核心原因就是框架找不到对应的动作方法。
解决方案
按照下面的步骤来操作:
给BukuController添加动作方法
打开controllers/BukuController.php,添加一个actionUtama()方法,让它负责渲染目标视图:public function actionUtama() { // 如果需要传递数据到视图,可以在这里处理 // $data = ...; // return $this->render('utama', ['data' => $data]); return $this->render('utama'); }这个方法的作用就是告诉框架,当访问
/buku/utama时,要执行这个方法并渲染utama.php视图。检查视图文件的正确性
确认views/buku/utama.php确实存在,文件名和路径都没有拼写错误——尤其是在Linux或Mac环境下,Yii对文件名大小写是敏感的,别把Utama.php写成utama.php或者反过来。排查自定义路由(可选)
如果你的项目在config/web.php里配置了urlManager的自定义路由规则,检查一下有没有规则和/buku/utama冲突,导致框架无法正确解析路由。如果有冲突,调整规则优先级或者修改路由即可。
验证
做完上面的步骤后,刷新页面再点击链接,就能正常跳转到目标页面啦~
内容的提问来源于stack exchange,提问作者Ayunda
相关产品推荐
相关产品推荐

