我有两个控制器Configure.php和Users.php。在我的route.cfg中,我有:
<iframe src="shiny-proxy/" class="shinyFrame">
<object data="shiny-proxy/" type="text/html; charset=utf-8" class="shinyFrame">
<embed src="shiny-proxy/" type="text/html; charset=utf-8" class="shinyFrame" />
</object>
</iframe>
当用户打开网站时,完美的浏览器栏https://www.stantiation.com/sub_crud/Users/login/中会出现以下页面。
问题是,如果用户忘记了密码,我将他们路由到可以创建新密码的方法时遇到麻烦。我让用户向自己发送电子邮件,我在其中放置了“代码”,使他们可以更新密码。该电子邮件具有此表单的链接: https://www.stantiation.com/sub_crud/Users/resetPassword?fp_code=492c8bbd3841xxx8201f3a01d77fd。
我还有一个名为view / Users / resetPassword.php的视图文件,该文件允许用户输入新密码。弹出来很好。这是表单的发布方法。 当用户按下“提交”时,由于没有save_userinput.php文件,因此工具栏中出现https://www.stantiation.com/sub_crud/Users/save_userinput并显示404错误。我试图在Users.php控制器中运行save_userinput()方法,而不是在view / Users /目录中运行save_userinput.php。我同意404,因为该文件不存在。 如何在控制器Users中以所需的形式指定方法,而不是view / Users / save_userinput.php文件?这就是为什么我放入最后一个$ route的原因,但这似乎无济于事。
答案 0 :(得分:0)
似乎您可能已经了解了CodeIgniter URL方案。阅读HERE。
基本上,它可以归结为http:doman.tld/controller/function[/var1 ...[/varN]]
因此,在域之后,您可以按以下方式解释多个细分:
因此URL https://www.stantiation.com/sub_crud/Users/save_userinput
将转到控制器Users
(似乎位于/application/controllers/sub_crud
的文件夹中)并调用控制器方法save_userinput
。它不在寻找名为save_userinput.php
的文件。
404可能是因为控制器不在子文件夹中,或者因为找不到控制器尝试加载的其他文件(即“查看”文件)。
如果不查看表单的html并确切知道文件布局的结构,就很难提供更好的建议。
(旁注:我避免将控制器放在子文件夹中,因为它与URL“ look”和IMO混淆,就“ controllers”而言,跟踪“什么是什么”并不难。 / em>)
当您要覆盖CodeIgniter基于URL的基于段的方法时,实际上只需要路由。考虑到这一点,基于对应用程序的普遍缺乏了解,以下“路由”似乎没有道理。
$route['registration'] = 'registration';
$route['login'] = 'login';
$route['subit_backend']['GET']='subit_backend/register';
$route['save_userinput']='Users/save_userinput';