【问题标题】:Laravel routing not working on MAMPLaravel 路由在 MAMP 上不起作用
【发布时间】:2015-03-27 14:43:30
【问题描述】:

我刚开始学习 laravel,我正在使用 MAMP。我在这个网址有一个表单:http://localhost:8888/laravel-site/my-new-app/public/ducks,但是当我提交表单时,它会将我带到这个网址:http://localhost:8888/ducks,并且不会停留在我期望的位置。

routes.php 文件包含以下内容:

Route::get('ducks', function() 
{
    return View::make('duck-form');
});

// route to process the ducks form
Route::post('ducks', function()
{

    // process the form here

});

在我的 .htaccess 文件中,我有这个:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    RewriteBase /laravel-site/my-new-app/public/

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

我可能遗漏了一些非常明显的东西,但是为什么当我提交表单时它没有留在同一页面上?

【问题讨论】:

  • 添加处理表单的代码。
  • 我现在只有返回“表单已发布!”; @Amr
  • 把这个返回 Redirect::back();而是尝试一下。
  • 不,只要我点击提交,我就会被带到这里:localhost:8888/ducks@Amr
  • @Amr 我应该这样做吗? epigroove.com/blog/…

标签: php .htaccess laravel laravel-4


【解决方案1】:

您尚未提供表单的 HTML,但我猜您硬编码了如下内容,并希望 Laravel 能够使其工作:

<form method="post" action="/ducks">

但是,Laravel 不会弄乱您的 HTML。相反,您需要使用表单助手为您创建表单。试试这个:

{{ Form::open(['url' => 'ducks']) }}

这应该为您提供正确的 URL。记住不要在 URL 的开头使用/,Laravel 已经假设所有 URL 都相对于应用程序根目录(尽管不一定是 Web 服务器文档根目录)。

除此之外,您还应该接受此处提到的其他建议:

  • app/config/local/app.php 中将应用程序的URL 设置为http://localhost:8888/laravel-site/my-new-app/public
  • 使用命名路由在整个 HTML 中保存硬编码 URL

【讨论】:

  • 你猜对了。而且我不知道 Laravel 假设所有 URL 都与应用程序根目录相关。谢谢。
  • 没问题。很高兴能帮上忙。
【解决方案2】:

检查您的应用程序 url 是否在 config/app.php 中设置正确:

'url' => 'http://localhost:8888/laravel-site/my-new-app/public',

并确保您的表单提交到正确的路线。

Form::open(array('route' => 'ducks'))

【讨论】:

  • 我的 config/app.php 是:'url' => 'localhost:8888/laravel-site/my-new-app/public'
  • 啊,是的,我就是这个意思。
  • 我添加了这一行: 'ducks')) ?> 而不是 html 表单,现在是我的 duck.form.blade.php文件收到此错误:未定义路线 [鸭子]。 (查看:/Applications/MAMP/htdocs/laravel-site/my-new-app/app/views/duck-form.blade.php)
  • 啊,请务必查看有关“表单和 HTML”的文档。您应该始终使用 Form 类而不是手动表单标签。确保也将方法设置为“发布”,这可能就是您收到该错误的原因。
【解决方案3】:

只需使用命名路由。它应该会有所帮助。

Route::get('ducks', array('as' => 'showForm', function() 
{
  return View::make('duck-form');
}));

// route to process the ducks form
Route::post('ducks', function()
{

// the get route is named as showForm
  return Redirect::route('showForm');
});

【讨论】:

    猜你喜欢
    • 2016-11-05
    • 2015-01-26
    • 2015-03-13
    • 2020-01-26
    • 2017-10-31
    • 2019-11-03
    • 2018-08-01
    • 2016-02-10
    相关资源
    最近更新 更多