2016-04-02 10 views
0

私はLaravelを初めて使用しています。レコードをデータベーステーブルに追加する簡単なフォームを作成しようとしています(IDと名前の2つのフィールドがあります)。Laravelシンプルフォームがエラーとセッション変数を設定しない

Route::group(['middleware' => ['web']], function() { 
    Route::get('/banks/add', '[email protected]'); 
    Route::post('/banks/add', '[email protected]'); 
}); 

BanksController.php

<?php 

namespace App\Http\Controllers; 
use Illuminate\Http\Request; 
use App\Http\Requests; 
use App\Http\Requests\BankFormRequest; 
use App\Bank; 

class BanksController extends Controller 
{ 

    public function add() { 
     return view('banks.add'); 
    } 

    public function store(BankFormRequest $request) { 

     $bank = new Bank(array(
      'name' => $request->get('name'), 
     )); 
     $bank->save(); 

     return redirect('/banks/add')->with('status', 'Your bank has been created! Its name is: '.$request->get('name')); 
    } 

} 

routes.phpの

BankFormRequest.php

0:ここ

は、私がこれまで持っているコードです。

<?php 

namespace App\Http\Requests; 
use App\Http\Requests\Request; 

class BankFormRequest extends Request 
{ 

    public function authorize() 
    { 
     return true; 
    } 

    public function rules() 
    { 
     return [ 
      'name' => 'required|unique:banks|max:255', 
     ]; 
    } 

} 

Bank.php

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Bank extends Model 
{ 
    public $timestamps = false; 
    protected $guarded = ['id']; 
} 

銀行/ add.php

<form id="registerForm" role="form" method="post"> 
    <pre><?=var_dump($errors)?></pre> 
    <pre> 
     <?php if (session()->has('status')): ?> 
      <?=session('status')?> 
     <?php endif; ?> 
    </pre> 

    <?php if (isset($errors) && $errors->any()): ?> 
     <?php foreach ($errors->all() as $error): ?> 
      <p class="alert alert-danger"><?=$erorr?></p> 
     <?php endforeach; ?> 
    <?php endif; ?> 

    <input type="hidden" name="_token" value="<?=csrf_token()?>"> 
    <div class="form-group"> 
     <label>Name</label> 
     <input type="text" class="form-control" placeholder="Bank name" name="name"> 
    </div> 
    <button type="submit" class="btn btn-primary">Add</button> 
</form> 

銀行テーブル

CREATE TABLE `banks` (
`id` int(11) NOT NULL AUTO_INCREMENT, 
`name` varchar(255) NOT NULL, 
PRIMARY KEY (`id`) 
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 

銀行/追加ビューでは、$ errorsとsession( 'status')変数の2つのvar_dumpsとフォームがありますが、それらは常にNULLです。さもなければ、フォームバリデーターはうまく動作し、私が定義したルールに合格すれば、データベースに自分の入力を挿入します。

エラーが表示されない原因は何ですか?

+0

'view'ファイルと' table'構造体を投稿してください。また、エラーメッセージを投稿してください。 –

+0

私の投稿を編集しました。私は何の誤りもありません。すべては、変数が常に空であるため、エラーまたは成功メッセージが表示されないように意図されたとおりに動作します。 –

+0

あなたのコントローラで 'use Session;'をインポートしませんでした。これを試して。 –

答えて

1
あなたの銀行/ add.phpで

<p class="alert alert-danger"><?=$erorr?></p> 

$ erorrあなたは、これはあなたの問題を解決しますルートグループのWebミドルウェアを削除するlaravel 5.2試しを使用している場合は、間違った

+0

ありがとうございます。しかし、それでも私の問題は解決しません。私はこの '<?= var_dump($ errors-> all())?>'のようなエラー配列をダンプしようとしましたが、それは常に空です。 –

+1

ミドルウェアなしであなたのコードを試してみましたが、それは動作します –

+0

うん。今それは私のためにも働く。説明が分かりますか?私は、「Laravel 5.2の変更点に関する記事」のセクション(http://learninglaravel.net/laravel5/building-a-support-ticket-system)を読んでいましたが、_ $ errorsオブジェクトはあなたが関連ルートをWebミドルウェアグループに入れます_。 –

1

です。どうして? RouteServiceProviderクラスによって追加されるためです。

53 - 60行目。

protected function mapWebRoutes(Router $router) 
    { 
     $router->group([ 
      'namespace' => $this->namespace, 'middleware' => 'web', 
     ], function ($router) { 
      require app_path('Http/routes.php'); 
     }); 
    } 
関連する問題