У вас может быть определенный c маршрут для таких действий, может быть это «действия»:
Route::post('actions/like','ActionsController@like')->name('actions.like');
Затем в запросе вы отправляете объект, который вы sh выполняете для действия над Я лично хэшировал, ха sh содержит идентификатор и имя_класса (тип объекта) в stdClass.
Вот как я лично это делаю: Каждая имеющаяся у меня модель наследует Base
Модель, которая Содержит атрибут hash
, который содержит
$hash = new stdClass;
$hash->id = $this->id;
$hash->type = get_class($this);
return encrypt($hash);
Это вернет строковое значение того, что там есть, и зашифровано, вы также можете иметь пароль для этого.
Тогда вы скажете у вас есть кнопка «Мне нравится» внутри формы или javascript, вы можете сделать это:
<form action="{{ route('actions.like') }} method="post">
<input type="hidden" name="item" value="{{ $thisViewItem->hash }}">
<button type="submit">Like</button>
</form>
При этом, когда вам нравится объект, вы отправляете хешированную строку в качестве данных, таким образом получая запрос $request->get('item')
содержащий объект (идентификатор и тип). затем обработайте его в контроллере так, как вам нравится.
Если вы отправляете это через javascript, вы можете захотеть его кодировать.
затем в ActionsController@like
у вас может быть что-то вроде этого:
$item = decrypt($request->get('item'));
# Will result in:
# Item->id = 1;
# Item->type = 'App\Post';
$Type = $Item->type;
# Build the model from variable
# Get the model by $item->id
$Model = (new $Type)->find($item->id);
# Like the model
$Like = $Model->like();
// the rest...
Я лично предпочитаю комбинировать и шифровать тип id + в строке, но вы можете отправить идентификатор и ввести текст в виде обычного текста и указать маршрут, который будет иметь следующий вид:
Route::post('actions/like/{type}/{id}','ActionsController@like');
Затем создайте модель из Type + ID, за которым следует то, что у вас есть в черте ($Model->like()
);
Все зависит от вас, но я пытаюсь намека что если вы хотите использовать действие like
во многих местах, вы можете начать строить логи c, начиная с самого action
(лайки, комментарии), а не от цели (посты, события).
Коды, которые я здесь поместил, написаны здесь, а не вставлены из того, что я на самом деле делаю, я пытаюсь донести до вас концепцию. Вы можете написать это по своему усмотрению.