添加更新方法laravel

时间:2015-11-01 06:26:53

标签: laravel laravel-5.1

我有一个注册功能,如下所示,并想知道如何添加更新方法。我是否只为我的更新和控制器功能添加了另一条路线?我是在正确的轨道上吗?以下是正确的吗?当它运行时,它告诉我致命异常,意外返回..

route.php

Route::post('manage_accounts', 'ManageAccountsController@register');
Route::post('manage_accounts', 'ManageAccountsController@update');

Controller.php这样

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests\StoreNewUserRequest;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Hash;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\User;
use App\Role;

class ManageAccountsController extends Controller
{
    public $userRepository;

    public function __construct(UserRepository $userRepository)
    {
        $this->userRepository = $userRepository;
    }

    public function index() 
    {
        $users = User::orderBy('name')->get();
        $roles = Role::all();

        return view('manage_accounts', compact('users', 'roles'));
    }

    public function register(StoreNewUserRequest $request)
    {
        // process the form here
        $this->userRepository->upsert($request);
        Session::flash('flash_message', 'User successfully added!');

        return redirect()->back();
    }

    public function update(UpdateUserRequest $request)
    {
        $this->userRepository->upsert($request)
        //Session::flash('flash_message', 'User successfully updated!');

        return redirect()->back();
    }
}

class UserRepository {

    public function upsert($data)
    {

            // Now we can separate this upsert function here
        $user = new User;
        $user->name     = $data['name'];
        $user->email    = $data['email'];
        $user->password = Hash::make($data['password']);
        $user->mobile   = $data['mobile'];
        $user->role_id  = $data['role_id'];

            // save our user
        $user->save();

        return $user;
    }
}

1 个答案:

答案 0 :(得分:0)

使用默认路由和控制器方法在您的情况下最有效。 使用php artisan make:controller命令创建一个控制器,您将获得各种CRUD任务的生成方法

/**
 * Display a listing of the resource.
 *
 * @return \Illuminate\Http\Response
 */
public function index()
{
    //
}

/**
 * Show the form for creating a new resource.
 *
 * @return \Illuminate\Http\Response
 */
public function create()
{
    //
}

/**
 * Store a newly created resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function store(Request $request)
{
    //
}

/**
 * Display the specified resource.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function show($id)
{
    //
}

/**
 * Show the form for editing the specified resource.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function edit($id)
{
    //
}

/**
 * Update the specified resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function update(Request $request, $id)
{
    //
}

/**
 * Remove the specified resource from storage.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function destroy($id)
{
    //
}

在您的路线中,您可以执行类似

的操作
Route::resource('accounts','AccountsController');

现在绝对可以通过在路线中进行更改来将方法限制为您想要的内容,如下所示

Route::resource('accounts', 'AccountsController',
                ['only' => ['index', 'show', 'update']]);

要查看路线并访问路线,您可以使用以下命令

php artisan route:list