如何在Laravel 5.1中调用Blade的控制器动作?

时间:2015-08-14 10:53:06

标签: laravel-5.1

我试图在Laravel 5.1中调用视图中的控制器操作,但无法执行此操作。

这是我到目前为止所尝试的内容:

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

但它正在提供 Class&#39; BridesController&#39;找不到错误。

3 个答案:

答案 0 :(得分:8)

要在属于当前操作的视图中呈现外部操作输出,您需要从当前操作调用外部操作,然后将其输出存储到变量并将其传递给当前视图。

从同一控制器调用操作

如果您要渲染的动作位于您正在使用的同一个控制器内,您可以调用:

$result = $this->action();

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

然后,在你的观点中,只是:

{!! $my_rendered_action !!}

使用此方法处理不呈现来自用户的任何内容,因为{!! !!}标签赢得了危险的输入。如果您不需要在操作响应中包含HTML,请务必使用{{}}代替。

从另一个控制器调用操作

如果您需要在多个控制器之间共享方法,最简单的方法是创建一个特征或实现逻辑的作业,然后两个控制器都将使用特征或调度相同的作业。

有关详细信息,请参阅Shaddy's answer to this question

希望它有所帮助。 ;)

答案 1 :(得分:4)

你可以这样做:

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

当然,如果你使用刀片,你可以这样做

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

你可以在这里查看 http://laravel.com/docs/5.1/controllers#basic-controllers

答案 2 :(得分:2)

如果您创建自己的外观,则可以执行此操作。

控制器:

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";
   }

}

//可能是服务提供商。

配置/ app.php

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

然后你可以在你的视图中使用。

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

我还没有对它进行测试,但我认为这应该可行。