如何从 Laravel 5.1 中的 Blade 调用控制器操作?

How to call controller action from Blade in Laravel 5.1?

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

这是我目前尝试过的方法:

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

但它给出 Class 'BridesController' not found 错误。

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

从同一控制器调用操作

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

$result = $this->action();

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

然后,在您的视野中,只有:

{!! $my_rendered_action !!}

注意 不渲染 任何来自用户使用此方法的内容,因为 {!! !!} 标签不会逃避危险的输入。如果您不需要在您的操作响应中包含 HTML,请始终更喜欢使用 {{ }}。

从另一个控制器调用操作

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

详情请参考

希望对您有所帮助。 ;)

如果您创建自己的门面,则可以这样做。

控制器:

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>

我还没有测试过,但我认为应该可以。

你可以这样做:

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

当然,如果您正在使用 blade,您可以这样做

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

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