#php #laravel #laravel-5
#php #laravel #laravel-5
Вопрос:
Я хочу спросить, как исправить эту ошибку. У меня есть эта ошибка, в которой отсутствуют требуемые параметры для [Route: userprofile.edit] [URI: userprofile/{userprofile}/edit]. (View: C:xampphtdocscodetask1resourcesviewsuserprofilecreate.blade.php)
У меня есть информация о пользователе userprofilecreate.blade.php
, и после отправки кнопки я хочу переместить страницу на userprofileedit.blade.php
Это мой userProfileController
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use AppHttpRequests;
use AppUser;
class userProfileController extends Controller
{
/**
* Display a listing of the resource.
*
* @return IlluminateHttpResponse
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return IlluminateHttpResponse
*/
public function create()
{
return view("userprofile.create");
}
/**
* Store a newly created resource in storage.
*
* @param IlluminateHttpRequest $request
* @return IlluminateHttpResponse
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return IlluminateHttpResponse
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return IlluminateHttpResponse
*/
public function edit($id)
{
$user = User::find($id);
return view('userprofile.edit')->withUser($user);
}
/**
* Update the specified resource in storage.
*
* @param IlluminateHttpRequest $request
* @param int $id
* @return IlluminateHttpResponse
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return IlluminateHttpResponse
*/
public function destroy($id)
{
//
}
}
Также маршрут для этого вида
Route::group(['namespace' => 'User'], function(){
Route::get('/userprofile/{id}/edit', ['as' => 'userprofile.edit', 'uses' => 'userProfileController@edit']);
});
Route::resource('userprofile','userProfileController');
И мое действие маршрута в кнопке в create.blade.php
<input type="submit" class="btn btn-primary" action="{{ route('userprofile.edit') }}" value="Edit profile">
Если у вас есть какие-либо идеи, почему эта ошибка, пожалуйста, напишите мне!
Спасибо.
Ответ №1:
Вы не можете добавить действие в поле ввода. Добавьте действие в form
тег. Вы не передаете какой-либо идентификатор в действии формы. Добавьте идентификатор к своему действию, например, я передал id = 1
<form method="post" action="{{ route('userprofile.edit', ['id' => 1]) }}">
Обновить
Прежде всего, вам нужно создать пользователя с заданными данными, а затем перенаправить на страницу редактирования с сгенерированным идентификатором.
Комментарии:
1. После отправки кнопки у меня тот же вид с измененным локальным хостом маршрута:8080/code/task1/public/userprofile/create?имя_пользователя=admin@example.com
Ответ №2:
Вам нужно установить значение по умолчанию для идентификатора, переданного в edit
и другие методы, например:
public function edit($id = null)
{
$user = User::find($id);
return view('userprofile.edit')->withUser($user);
}
Здесь мы устанавливаем значение по умолчанию id
to null
. Затем проверьте в своем методе, имеет ли он значение null, и если да, верните с ошибкой или что вы хотите сделать в этой ситуации:
public function edit($id = null)
{
if(!$id)
return back()->with(['error'=>'No document selected for editing.']);
$user = User::find($id);
return view('userprofile.edit')->withUser($user);
}
if(!$id)
return back()->with(['error'=>'No document selected for editing.']);
Это ваша проверка, и если идентификатор равен нулю, мы просто возвращаемся назад и уведомляем пользователя (вы должны проверить наличие ошибки в вашем представлении блейда и отобразить ее, если она существует).
Комментарии:
1. У меня нет проблем с установкой значения id, метод дает мне правильный идентификатор, но у меня проблема с перемещением страницы в edit.blade.php
Ответ №3:
вместо
<input type="submit" class="btn btn-primary" action="{{ route('userprofile.edit') }}" value="Edit profile">
использовать
<a href="{{url('/userprofile/'.PROFILE ID.'/edit')" class="btn btn-primary" >Edit profile</a>
ИДЕНТИФИКАТОР ПРОФИЛЯ должен быть id
Комментарии:
1. почему вы используете url вместо route?
2. после того, как я изменю это и отправлю кнопку, у меня будет тот же вид, и маршрут изменится на этот локальный хост: 8080/code/task1/public/userprofile / …