【问题标题】:Form issue in Laravel 5Laravel 5 中的表单问题
【发布时间】:2016-06-26 10:02:05
【问题描述】:

在 routes.php 中

Route::get('/form1', 'FriendsController@getAddFriend');
Route::post('/form1', 'FriendsController@postAddFriend');

在app/Http/Controllers/FriendsController.php中

namespace App\Http\Controllers;
use App\Http\Requests\FriendFormRequest; 
use Illuminate\Routing\Controller;
use Response;
use View;

class FriendsController extends Controller
{
public function getAddFriend()
{
    return view('friends.add');
}

public function postAddFriend(FriendFormRequest $request)
{
    return Response::make('Friend added!');
}
}

在app/Http/Requests/FriendFormRequest.php中

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use Response;

class FriendFormRequest extends Request
{
public function rules()
{
    return [
        'first_name' => 'required',
        'email_address' => 'required|email'
    ];
 }

public function authorize()
{
            return true;
}


public function forbiddenResponse()
{

    return Response::make('Permission denied foo!', 403);
}


public function response()
{

}
}

在资源/views/friends/add.blade.php

 @foreach ($errors->all() as $error)
    <p class="error">{{ $error }}</p>
 @endforeach

<form method="post">
    <label>First name</label><input name="first_name"><br>
    <label>Email address</label><input name="email_address"><br>
    <input type="submit">
</form>

当我通过http://localhost/laravel/public/form1运行时

我收到错误消息“糟糕,好像出了点问题。”

当我删除以下行时

 @foreach ($errors->all() as $error)
    <p class="error">{{ $error }}</p>
 @endforeach

显示表格

什么是错误?

【问题讨论】:

  • 请发布堆栈跟踪(在“哎呀”下)。

标签: laravel laravel-5


【解决方案1】:

我能想到的是您的 $errors 变量不存在,这就是导致脚本抛出异常的原因。

1. 如果您使用的是 Laravel 5.2,您可能会在此处找到答案: Undefined variable: errors in Laravel

基本上在 app/Http/Kernel.php 你需要检查 $middlewareGroups['web'] 是否包含

  \Illuminate\View\Middleware\ShareErrorsFromSession::class,

2.如果您使用的是其他 Laravel 版本,可能您可以像这样添加额外的检查:

     @if(isset($errors))
       @foreach ($errors->all() as $error)
         <p class="error">{{ $error }}</p>
       @endforeach
     @endif

要进一步调查问题,您需要向我们提供异常的堆栈跟踪。如果您只看到 "Whoops ..." 消息,则进入 .env 文件并更改 APP_DEBUG = true

【讨论】:

    猜你喜欢
    • 2016-05-20
    • 2015-09-14
    • 2013-01-07
    • 1970-01-01
    • 2016-04-24
    • 2015-05-29
    • 2016-12-21
    • 2015-10-22
    相关资源
    最近更新 更多