【问题标题】:Method call from multiple controllers in laravel来自laravel中多个控制器的方法调用
【发布时间】:2017-05-06 08:36:38
【问题描述】:

我需要将图像保存到多个控制器(出价、文章、用户等),所以如果有一个我可以从这些控制器中调用的方法,那就太好了,我可以实现的最佳方法是什么以及如何?

PS:我需要这样的函数/方法,因为我调整大小、重命名、裁剪等,并且我希望在整个上传过程中保持绝对的连贯性

【问题讨论】:

  • 不确定“将图像保存到多个控制器”是什么意思。如果您使用 Eloquent 模型保存图像,那么您可以向模型添加处理方法,并覆盖并将处理功能添加到存储/更新方法中。
  • 我需要将图像保存到多个控制器(出价、文章、用户等), -- 所以,您希望保存图像并让该方法可以从不同的控制器中调用控制器?你可以创建一些类并将它们放在 app 目录中的某个位置,然后调用它们..(假设你使用了正确的 namespaceuse
  • @BagusTesa 没错,我想从不同的控制器调用相同的方法,我需要从这些控制器中以完全相同的方式将图像保存到磁盘上。所以我只是创建一个不是模型的新类,对吧?
  • @SantiagoCapdevila 是的,您可以添加自定义类。但是,如果我没记错的话,请多注意文件位置、文件名和命名空间,laravel 主要使用 psr-4 来生成自动加载。好吧,以 app 目录为例,注意它们的 文件位置、文件名称和命名空间您将能够安全地制作自定义类。

标签: php laravel model-view-controller methods controller


【解决方案1】:

最好的方法是创建一个包含图像模型的关系和方法的特征。这是我的使用方法。

Crate trait Imageable.

 trait Imageable
 {

    public function images()
    {
       //code
    }
 }

创建产品控制器。

<?php

use App\Traits\Imageable;

class ProductController  extends Controller
{
    use Imageable;


}

创建 CollectionController。

    <?php
    use App\Image;
    use App\Traits\Imageable;
    use Eloquent as Model;

    class CollectionController  extends Controller
    {
        use Imageable;
    }

在这个引用中使用 trait 的属性。

$this->images();
$this->images();

【讨论】:

    【解决方案2】:

    你可以在Controller.php中添加方法,因为控制器扩展了这个控制器,所以所有的控制器都会有这个方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多