控制器内调用别的控制器的方法,并传参 
                                                    
                        
                    
                    
  
                    
                    <?php
namespace App\Tools;
use Illuminate\Routing\RouteDependencyResolverTrait as DepResolver;
trait CallActionTrait
{
    use DepResolver;
    private $container;
    #调用别的控制器中的方法
    public function callControllerMethod(string $class, string $method, array $routeParameters = [])
    {
        #指定容器,不指定,如果有参数传递时,会报错
        $this->container = app();
        #获取控制器完整路径
        $controller = $this->namespace . '\\' . $class;
        try {
            #实例化控制器
            $instance = app()->make($controller);
            #获取并组装参数
            $parameters = $this->resolveClassMethodDependencies($routeParameters, $instance, $method);
            #调用
            return $instance->callAction($method, $parameters);
        }catch (\Exception $exception){
            return abort(404);
        }
    }
}使用
<?php
namespace App\Http\Controllers\Home;
use App\Http\Controllers\Controller;
use App\Tools\CallActionTrait;
use Illuminate\Http\Request;
class PageController extends Controller
{
    use CallActionTrait;
    #当前命名空间(必须要定义)
    public $namespace = 'App\Http\Controllers\Home';
    public function index(Request $request)
    {
        $controller = 'PlanController';
        return $this->callControllerMethod($controller, 'index');
    }
}
声明:这段代码没有优势,只是为了针对我在工作中遇到的问题的视线方案。仅此而已
本作品采用《CC 协议》,转载必须注明作者和本文链接
 
           阿珂 的个人博客
 阿珂 的个人博客
         
                     
                     
             
             
             
             
         
             
             
             
             
             
           
           关于 LearnKu
                关于 LearnKu
               
                     
                     
                     粤公网安备 44030502004330号
 粤公网安备 44030502004330号 
 
推荐文章: