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