1

以下のLaravelの投稿をルーターからモデルに移動する方法について、誰かが私を正しい方向に向けることができることを願っていますか? Laravel のドキュメントでは、ルーティングを使用してすべてを説明していますが、しばらくするとコードがめちゃくちゃになってしまいます。

Route::post('reminder', array('before' => 'csrf', function(){

    $rules = array(
        'first_name' => array('required', 'min:2'),
        'last_name' =>  array('required', 'min:2'),
        'email_address' =>  array('required', 'email')
        );

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

    if ($validator->fails()){
        return Redirect::to(Input::get('ref'))->withInput()->withErrors($validator);

    } else {

     DB::table('mytable')->insert(
        array(
        'fname' => Input::get('first_name'),
        'lname' => Input::get('last_name'),
        'email' => Input::get('email_address'),
    );
     return Redirect::to(Input::get('ref'))->with('message', 'Thank you.');     
    }
}));
4

2 に答える 2

1

ルート:

Route::post('reminder', array('before' => 'csrf',
                              'as'=> 'reminder',
                              'uses' => 'HomeController@index',
                              ));

ホームコントローラー

public function index()
{
  $model = new HomeModel();
  $input = Input::all();
  $result = $model->insert($input);

  if($result instanceof \Illuminate\Validation\Validator)
  {
     return Redirect::to(Input::get('ref'))->withInput()->withErrors($result);
  } else {
     if($result)
     {
       return Redirect::to(Input::get('ref'))->with('message', 'Thank you.');
     } else {
      App::abort(500);
     }
  }
}

モデル:

public function insert($input)
{
  $rules = array(
    'first_name' => array('required', 'min:2'),
    'last_name' =>  array('required', 'min:2'),
    'email_address' =>  array('required', 'email')
    );

$validator = Validator::make($input, $rules);

if ($validator->fails()){
    return $validator;

} else {

 return DB::table('mytable')->insert(
    array(
    'fname' => $input['first_name'],
    'lname' => $input['last_name'],
    'email' => $input['email_address'],
);
}
于 2013-09-10T18:21:16.843 に答える
-1

これは、実際にはcontrollersディレクトリ内のコントローラーに入ります。

routes.php

Route::post('reminder', 'TestController@postReminder');

TestController.php

<?php 
class TestController extends BaseClass
{
    function postReminder()
    {
        $rules = array(
            'first_name' => array('required', 'min:2'),
            'last_name' =>  array('required', 'min:2'),
            'email_address' =>  array('required', 'email')
            );

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

        if ($validator->fails()){
            return Redirect::to(Input::get('ref'))->withInput()->withErrors($validator);

        } else {

         DB::table('mytable')->insert(
            array(
            'fname' => Input::get('first_name'),
            'lname' => Input::get('last_name'),
            'email' => Input::get('email_address'),
         );
         return Redirect::to(Input::get('ref'))->with('message', 'Thank you.');     
    }
    }
}
于 2013-09-10T18:22:02.610 に答える