Laravel: как вставить данные при нажатии на ссылку href, используя маршрут и контроллер

После нажатия кнопки «Да, я уверен» данные не вставляются в базу данных. Вот мой код. Пользователь авторизации блокирует другого пользователя от просмотра своего профиля. Итак, я вставляю имя пользователя для аутентификации данных и блокирую имя пользователя в данные после нажатия «Да, я уверен», но данные не вставляются.

мой файл .blade profile/index.blade.php здесь ссылка href "Да, я уверен" для продолжения маршрута

<div class="cd-popup" role="alert">
  <div class="cd-popup-container"><br>
    <div class="content_block">Are you sure you want to block this person?</div><br>
   <div class="content_block_instruct">Hide content and notifications from this user.</div><br>
    <ul class="cd-buttons">

      <li> <a href="{{route('profile.index',['username' => $user->username])}}">Yes I am Sure!</a></li>

      <li><a href="">Cancled</a></li>
    </ul>
    <a href="#0" class="cd-popup-close img-replace">Close</a>
  </div> <!-- cd-popup-container -->
</div>

Файл маршрута

Route::post('/{username}', [
    'uses' => 'Profile\UserProfileController@blockUser',
    'as'   => 'profile.index',
]);

Файл контроллера, чье имя пользователя отображается в URL-адресе, с их именем пользователя проверьте модель BlockUser, если block_username и URL-адрес пользователя совпадают, данные не вставлены, иначе данные не совпадают с их данными, вставленными в базу данных.

public function blockUser(Request $request, $username)
{

       $blocked = User::where('id', Auth::user()->id)->first();
       if (blockuser::where('block_username', $username)->first()){

       }else{
           $blocked = new blockuser;
           $blocked->user_username = Auth::user()->username;
           $blocked->block_username = $username;
           $blocked->save();
       }

       $user = Auth::user();
       $userprofile = userprofile::where('user_id', Auth::user()->id)->first();
       return view('profile.index',compact('user', 'userprofile'));
 }

Вот моя модель пользователя

  public function blockuser(){
        return $this->hasOne( BlockUser::class);
  }

Модель BlockUser

use App\User;

class BlockUser extends Authenticatable
{

      public $timestamps = false;

      protected $fillable = [
        'user_username', 'block_username',
      ]; 

      public function user()
      {
        return $this->belongsTo( User::class, 'username' );
      }
}

Таблица базы данных block_users

id   user_username   block_username
1    
2

person Sagar Ambade    schedule 13.05.2019    source источник


Ответы (1)


Простое нажатие на ссылку фактически делает HTTP-запрос GET. Вам нужно изменить с Route::post(...) на Route::get(...). Если вы все еще хотите иметь метод публикации, сделайте простой вызов ajax с методом публикации в событии onclick тега привязки.

person Kalpashree V. Bal    schedule 14.05.2019