0

フォームがあります。ユーザーがフォームを送信してエラーが発生すると、次のように表示します。

コントローラの登録

return View::make('theme-admin.user_add')->with('error_msg', validation->errors->first());

register.blade.php

@if($error_msg !== null)
  <div class="alert red hideit max">
     <div class="left">
            <span class="red-icon"></span>
            <span class="alert-text">{{ $error_msg }}</span> <-- Error message is visible here.
     </div>
     <div class="right">
          <a class="close-red"></a>
     </div>
 </div>
@endif

//
    Actual HTML Form
//

ただし、そのエラー div をブレード ファイルに移動したいと考えています。(error.blade.php) と、エラー発生時にパラメータで呼び出したい。

このようになります。

新しい register.blade.php

{{ MESSAGE_CONTENT }} //This should be replaced with error.blade.php dynamically
//
    Actual HTML Form
//

MESSAGE_CONTENT は error.blade.php 経由で含まれます

error.blade.php

<div class="alert red hideit max">
     <div class="left">
            <span class="red-icon"></span>
            <span class="alert-text">{{ $message }}</span> <-- Error message is visible here.
     </div>
     <div class="right">
          <a class="close-red"></a>
     </div>
 </div>

フォームが失敗し、いくつかのエラーが発生したとしましょう。error.blade.php をロードして、メッセージの背景が赤になるようにします。

このようなもの;

return View::make('theme-admin.user_add')->with(message_content', (Load error.blade.php here))->with('message', $validation->errors->first();

フォームが成功した場合、メッセージ領域に success.blade.php をロードするだけで、メッセージは緑色の背景で表示されます。

 return View::make('theme-admin.user_add')->with(message_content', (Load success.blade.php here))->with('message', 'You successfully registered');

あなたはおそらくロジックを理解しています。

これどうやってするの?

Ps。画像例: http: //i.imgur.com/QExAiuA.png

4

3 に答える 3

1

明確な解決策は、タイプとメッセージを持つ単純なアラート オブジェクトを持つことです。

//in controller
$alert->type = 'error'; // or 'success'
$alert->class = 'red'; // or 'green'
$alert->msg = $validation->errors->first(); // or 'You successfully registered'
 return View::make('theme-admin.user_add')->with('alert', $alert);

//register.blade.php
@include('alert')

//Actual HTML Form

//alert.blade.php
@if(isset($alert))
  <div class="alert {{$alert->class}} hideit max">
     <div class="left">
            <span class="red-icon"></span>
            <span class="alert-text">{{ $alert->msg }}</span>
     </div>
     <div class="right">
          <a class="close-{{$alert->class}}"></a>
     </div>
 </div>
@endif
于 2013-04-07T19:12:56.383 に答える
1

GET 用に定義されたルートでビュー ( View::make()) を作成し、POST ルートでフォーム入力を処理する必要があります。

//routes.php
Route::get('admin/adduser', array('as' => 'adduser', 'do' => function()
{
    return View::make('theme-admin.user_add');
}));

//route for handling form input
Route::post('register', array('before' => 'csrf', function()
 {
     $rules = array(
         //your vailidation rules here..
     );

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

     if ($validation->fails())
     {
         //re-populate form if invalid values, so add flashing input by with_input()
         //also pass errors by using with_errors
         return Redirect::to('adduser')->with_input()->with_errors($validation);
     }
     else {
         //use the named route we defined in Route:get above
         return Redirect:to('adduser')->with('message', 'Successfully added the new user!');
     }
 }));

エラー メッセージと成功メッセージを表示するために新しいビューを作成する必要はありません。成功とエラーを独自のブレード テンプレートに分けたい場合は、adduser.blade.php で次を使用できます。

//adduser.blade.php
@if($errors->has())
    @include('errormsg'); //use {{ $errors->first() }} or @foreach($errors->all() as $message) to print error message(s)
@else
    @include('success'); //use {{ $message }} to print success
@endif

ただし、ビューでセクションを使用して、代わりに成功メッセージとエラー メッセージの両方を同じビュー内に配置することもできます。

//feedback.blade.php
@section('error')
    <em class="error">{{ $errors->first() }}</em>
@endsection

@section('success')
    <em class="success">{{ $message }}</em>
@endsection

//adduser.blade.php
@include('feedback');

@if($errors->has())
    @yield('error');
@else
    @yield('success');
@endif

それが役立つことを願っています。

于 2013-04-07T19:50:36.437 に答える
1

私は自分で解決策を見つけました。ネストされたビュー機能が必要でした。

$view = View::make('home');
$view->nest('content', 'orders', array('orders' => $orders));

詳細については、Laravel のドキュメントを参照してください。

于 2013-04-08T16:38:31.690 に答える