验证错误消息未显示且数据未保存到数据库

时间:2015-07-14 06:52:14

标签: php mysql forms routes laravel-5

我试图首先验证输入,然后将值添加到数据库,但我既不能看到验证错误消息,也无法将记录插入数据库。我在数据库中有一个名为'news'的表,我有

这是我的boxed.blade.php

<form class="form-horizontal" role="form" method="post" action="/addNews" novalidate>
                                  <div class="form-group">
                                      <label for="inputEmail1" class="col-lg-2 col-sm-2 control-label">Title</label>
                                      <div class="col-lg-10">
                                          <input type="text" name="title" class="form-control" id="inputEmail1" placeholder="News Title" value="{{ Input::old('title') }}">

                                      </div>
                                  </div>

                                  <div class="form-group">
                                      <label for="inputPassword1" class="col-lg-2 col-sm-2 control-label">Description</label>
                                      <div class="col-lg-10">
                                          <textarea name="description" class="form-control" rows="6">{{ Input::old('description') }}</textarea>
                                      </div>
                                  </div>

                                   <div class="form-group">
                                       <label for="inputEmail1" class="col-lg-2 col-sm-2 control-label">Reporter</label>
                                           <div class="col-lg-10">
                                              <input type="text" name="reported_by" class="form-control" id="inputEmail1" placeholder="Reporter Name" value="{{ Input::old('reported_by') }}">
                                            </div>
                                    </div>

                                      <div class="form-group">
                                        <div class="col-lg-offset-2 col-lg-10">
                                            <div class="checkbox">
                                                 <label>
                                                      <input type="checkbox" name="status"> Status
                                                 </label>
                                            </div>
                                        </div>
                                      </div>

                                  <div class="form-group">
                                      <div class="col-lg-offset-2 col-lg-10">
                                          <button type="submit" class="btn btn-danger"><i class="fa fa-comments"></i> Add To List</button>
                                      </div>
                                  </div>
                              </form>

和routes.php

  Route::get('addNews', function()
        {
          return View::make('pages.boxed');
        }
    );

    Route::post('addNews', function()
        {
            //processing the form
            $rules = array(
                'title' => 'required',
                'description' => 'required|min:50',
                'reported_by' => 'required'
            );

            $validator = Validator::make(Input::all(), $rules);

            if ($validator->fails()){
                $message = $validator->message();
                return Redirect::to('addNews')->withErrors($validator)->withInput(Input::all());
            }

            else{
                $news = new News;
                $news->title = Input::get('title');
                $news->description = Input::get('description');
                $news->reported_by = Input::get('reported_by');
                $news->status = Input::get('status');

                $news->save();
                return Redirect::to('addNews');
            }
        }

这是我的模特News.php

 <?php

    namespace App;

    use Illuminate\Database\Eloquent\Model;

    class News extends Model
    {
        protected $fillable = array('title', 'description', 'reported_by', 'status');
    }

1 个答案:

答案 0 :(得分:0)

如果您想查看错误,请将以下代码放在表单上方:

@if (count($errors) > 0)
    <div class="alert alert-danger">
        <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
        <strong>Whoops!</strong> There were some problems with your input.<br><br>
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

更新1:而不是在routes.php文件中定义方法,而是在名为NewsController的控制器中定义

因此,要执行此操作,请将routes.php文件更新为:

Route::get('/addNews', 'getNewsForm');
Route::post('/addNews', 'postNewsForm');

NewsController.php

/**
 * Display the add news form to the user.
 *
 * @return view
 */
public function getNewsForm()
{
    return View::make('pages.boxed');
}

/**
 * Store the input in the database after validation
 *
 * @param $request Illuminate\Http\Facade\Request
 */
public function postNewsForm(Request $request)
{
    $this->validate($request, [
        'title'       => 'required',
        'description' => 'required|min:50',
        'reported_by' => 'required'
    ]);

    News::create($request->all());

    return redirect('/addNews');
}