Laravel表单验证不会返回错误

时间:2016-06-06 12:22:31

标签: php validation laravel-5.2 laravel-facade

我正在尝试验证Laravel中的表单。如果我没有输入所需的值,它会将我重定向回形式,但每次$errors都保持不变

object(Illuminate\Support\ViewErrorBag)#198 (1) {
  ["bags":protected]=>
  array(0) {
  }
}

我的控制器

<?php

namespace App\Http\Controllers\admin;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use Auth;
use App\Category;
use App\Http\Requests\CategoryRequest;

class CategoriesController extends Controller {

public function store(CategoryRequest   $request) {
        Category::create($request->all());
        return redirect('cpl_biovideo/dashboard');

    }

}

我的请求

<?php

namespace App\Http\Requests;

use App\Http\Requests\Request;

class CategoryRequest extends Request
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return TRUE;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'name' => 'required|min:4|max:20'
        ];
    }
}

我的模型

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Category extends Model
{
    protected $fillable =   ['name'];
}

我的查看

<div class="card">
        <div class="card-header">
            <h2>Add Category</h2>
        </div>
        <?php
            echo "<pre>";
            var_dump($errors);
            echo "</pre>";
        ?>
        <form action="{{url('cpl_biovideo/save-category')}}" method="post">
            <input type="hidden" name="_token" value="{{csrf_token()}}" />
            <div class="card-body card-padding">

                <div class="form-group">
                    <div class="fg-line">
                        <input type="text" class="form-control input-lg" placeholder="Category Name" name="name">
                    </div>
                </div>

                <div class="form-group">
                    <div class="fg-line">

                        <div class="select">
                            <select class="form-control" name="parent_id">
                                <option value="">Parent Category</option>
                                <?php
                                foreach ($categories as $category) {
                                    ?>
                                    <option value="<?php echo $category->id ?>">
                                        <?php echo $category->name; ?>
                                    </option>
                                    <?php
                                }
                                ?>

                            </select>
                        </div>
                    </div>
                </div>

                <button type="submit" class="btn btn-primary btn-sm m-t-10">Submit</button>
            </div>    
        </form>

    </div>

2 个答案:

答案 0 :(得分:0)

你还没有在这里阻止你的路线。但是,如果您使用的是Laravel 5.2.27或更高版本,请从路由组中删除“web”中间件。

答案 1 :(得分:0)

在控制器中使用$this->validate

public function store(CategoryRequest $request) {
  //validate the data
  $this->validate($request, [
    'name' => 'required|min:4|max:20'
  ]);
  
  //check
  dd($request->name);
});