Отсутствуют обязательные параметры для маршрута

#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 / …