Как вызвать действие контроллера из Blade в Laravel 5.1?

Я пытаюсь вызвать действие контроллера в представлении в Laravel 5.1, но не могу этого сделать.

вот что я пробовал до сих пор:

<?php echo BridesController::getPhotographer($data->sender_id);?>

но это класс 'BridesController' не найден ошибка.

3 ответов


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

вызов действий от того же контроллера

Если действие, которое вы хотите отобразить, находится внутри того же контроллера, который вы используете, вы можете вызвать:

$result = $this->action();

return view('my.view',['my_rendered_action'=>$result]);

и затем, в вашем представлении, просто:

{!! $my_rendered_action !!}

береги не оказывает все, что исходит от пользователя, использующего этот метод, потому что {!! !!} теги не будут создавать опасные входные данные. Если вам не нужно иметь HTML внутри вашего ответа на действие, всегда предпочитайте использовать {{ }}.

вызов действий с другого контроллера

Если вам нужно разделить метод между более чем одним контроллером, самый чистый способ-создать признак или задание, которое реализует логику, а затем оба контроллера будут использовать признак или отправь ту же работу.

пожалуйста, обратитесь к ответ Шэдди на этот вопрос для получения дополнительной информации.

надеюсь, что это помогает. ;)


вы можете сделать это:

action('BridesController@getPhotographer',$data->sender_id);

конечно, если вы используете blade Вы можете сделать это

{{ action('BridesController@getPhotographer',$data->sender_id) }}

Вы можете проверить это здесь http://laravel.com/docs/5.1/controllers#basic-controllers


Если вы создаете свой собственный фасад, вы можете сделать это.

:
namespace App\Http\Controllers;

use Illuminate\Support\Facades\Facade;

class BridesController extends Facade {

   protected static function getFacadeAccessor() {
       //what you want
       return 'getPhotographer';
   }

   public static function getPhotographer() {
       return "photographer";
   }

}

/ / пусть это будет поставщик услуг.

config / app.в PHP

 'BridesController'=>  App\Http\Controllers\BridesController::class,

и затем вы можете использовать на ваш взгляд.

<div class="panel-body">
    {{BridesController::getPhotographer()}}
</div>

Я не тестировал его, но я думаю, что это должно сработать.