Я хочу удалить элемент. Для этого я передаю id элемента из html-формы функции контроллера destroy(). т. е. public function destroy (Request $request, Item $item){...}
. Item
- это модель. Но я не получаю модель в функции, как я проверил по этой строке, dd($item)
. Он содержит null attribute
. Уверен, что $item
в функциональных параметрах contains the value of product id
i.e, public function destroy (Request $request, $item){...}
. Но когда я использую Model в параметрах, в массиве атрибутов ничего нет. (Проверено dd($item)
). Я также реализую Policy in Model
. Короче говоря, я следую this tutorial. Но я не могу выполнять операцию удаления, поскольку он содержит модель без атрибутов. Если кто-нибудь знает ответ, ответ будет оценен. Вот мой код.Как получить модель в функции контроллера в Laravel 5.2?
Модель
namespace App;
use Illuminate\Database\Eloquent\Model;
class Item extends Model
{
protected $fillable = ['col1', 'col2'];
public $timestamps = false;
public function user()
{
return $this->belongsTo('App\User', 'user');
}
}
Политика
AuthServiceProvider
protected $policies = ['App\Client' => 'App\Policies\ClientPolicy'];
ItemController
use App\Item;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Repositories\ItemRepository;
public function destroy(Request $request, Item $item)
{
dd($item); //This shows empty attribute in item
$this->authorize('destroy', $item);
// Delete The Task...
$client->delete();
return view('/clients');
}
Посмотреть
<form action="{{ url('items/'.$item->id) }}" method="POST">
{!! csrf_field() !!}
{!! method_field('DELETE') !!}
<button type="submit" id="delete-item-{{ $item->id }}" class="btn btn-danger">
<i class="fa fa-btn fa-trash"></i>Delete
</button>
</form>
Маршрут
Route::get('/', function()
{
return view('welcome');
});
Route::group(['middleware' => ['web']], function()
{
Route::auth();
Route::resource('items', 'ItemController');
});
Если я прав, то нет какой-либо вопрос, связанный с политикой и видом, как я m получает значение идентификатора товара в $ item.
Вы можете разместить код для ваших маршрутов, а также форму, а? – Donkarnash
Я получаю контроль над методом destroy() элемента ItemController даже со значением $ item. Поэтому в этих сценариях не должно быть никаких проблем.Но по вашему запросу я отправляю сообщение. –
Итак, из формы вы просто передаете идентификатор элемента $ в качестве параметра, поэтому, когда в вашем ItemController вы пытаетесь получить доступ (Model) $ item, он показывает null, потому что параметр содержит только идентификатор, а не полную модель. – Donkarnash