Пользовательская функция внутри контроллера не найдена

Я создал controller с resource. Я создал в нем пользовательскую функцию, однако, когда я использую ее как route в своем blade.php, она говорит, что она не определена.

Любая помощь с ошибкой и объяснение об этом высоко ценится!!

Блейд

    <div class="modal fade" id="issueModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
        <div class="modal-header">
            <h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
            <button type="button" class="close" data-dismiss="modal" aria-label="Close">
            <span aria-hidden="true">&times;</span>
            </button>
        </div>
        <div class="modal-body">
            <form action="{{route('inventory.deduct')}}" method="post">


        </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-primary">Save changes</button>
                <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
            </div>
            </form>
        </div>
    </div>
</div>

пользовательская функция внутри контроллера

public function deduct(Type $var = null)
{
    dd("test");
}

Маршрут

Route::resource('inventory', 'InventoryController');

person kwestionable    schedule 05.09.2019    source источник
comment
Как вы создавали маршруты?   -  person Tharaka Dilshan    schedule 05.09.2019
comment
О, подождите, я добавлю свои маршруты @TharakaDilshan   -  person kwestionable    schedule 05.09.2019
comment
Я добавил это @TharakaDilshan, пожалуйста, смотрите редактирование   -  person kwestionable    schedule 05.09.2019
comment
Видеть. маршруты ресурсов добавляют только эти конкретные маршруты. Если вы определили какой-либо пользовательский метод. вам нужно добавить еще один пользовательский маршрут. это оно.   -  person Tharaka Dilshan    schedule 05.09.2019


Ответы (2)


Route::post('/inventory/deduct', 'InventoryController@deduct')->name('inventory.deduct');

Добавьте это в свои маршруты в файле Web.php. Ресурс создает только маршруты по умолчанию для контроллера, а не пользовательские.

person Ahmad Karimi    schedule 05.09.2019
comment
Таким образом, маршрут, созданный с использованием ресурсов по умолчанию, не влияет на наличие в нем пользовательских ресурсов? - person kwestionable; 05.09.2019
comment
@kwestionable Нет, это не так. Какие бы настраиваемые маршруты вы ни создавали, их необходимо добавить в файл routes/web.php. - person linuxartisan; 05.09.2019
comment
Итак, что касается inventory@deduct, указывает ли это на мой InventoryController? Или мне нужно сделать еще один клиентский контроллер? - person kwestionable; 05.09.2019
comment
@AhmadKarimi Я думаю, это должно быть InventoryController@deduct - person Tharaka Dilshan; 05.09.2019
comment
@TharakaDilshan, ты прав. Я исправил ошибку. - person Ahmad Karimi; 05.09.2019

Маршрут ресурсов предназначен для index, create, store, show, edit, update и destroy. Ваш новый маршрут не определен в маршруте ресурсов. Поэтому вам нужно создать новый маршрут, чтобы использовать его. Добавьте этот маршрут над маршрутом вашего ресурса в файле web.php

Route::post('inventory/deduct', 'InventoryController@deduct')->name('inventory.deduct');

Это сделает ваш маршрут, и вы сможете использовать его в своей форме, и вы можете заставить функцию вашего контроллера делать то, что вы хотите.

person zahid hasan emon    schedule 05.09.2019