【问题标题】:Moving Laravel 4 post from router to model将 Laravel 4 帖子从路由器移至模型
【发布时间】:2013-09-10 17:39:37
【问题描述】:

我希望有人能指出正确的方向,我将如何将下面的 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.');     
    }
}));

【问题讨论】:

    标签: php routing laravel laravel-4


    【解决方案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'],
    );
    }
    

    【讨论】:

    • 我最终替换了 $result = $model->insert($input); $result = HomeModel::set($input);因为它没有运行验证只插入。谢谢。
    【解决方案2】:

    这实际上会进入您的 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.');     
        }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-05-09
      • 2014-05-12
      • 1970-01-01
      • 2016-03-29
      • 1970-01-01
      • 2021-01-12
      • 1970-01-01
      • 2020-06-14
      • 2013-10-27
      相关资源
      最近更新 更多