Laravel,有没有办法将资源/视图路径中的代码包含到控制器中?

时间:2018-08-22 11:23:23

标签: php laravel

我的目标是包括位于资源/视图中的其他来源的代码。我尝试使用resource_path('views/myfiles.php'),但是它什么也没做。

控制器

class MyController extends Controller
{
    public function test(Request $request)
    {
        if($request->input('name') == "chair")
        {
            $theFilesLocation = "resources.views" . $request->input('name');
            @include($theFilesLocation) //something like this
        }

    }
}

myfiles.php

<?php
    dump("if this shows up, then the code works")
?>

2 个答案:

答案 0 :(得分:1)

尝试下面的代码,但我认为这不是一个好方法。

class MyController extends Controller
{
     require_one(resource_path('views/myfile');
}

或使用Laravel文件外观

class MyController extends Controller
{
     \File::requireOnce(resource_path('views/myfile');
}

您应该创建一个类并将代码放在此处,然后从控制器调用它是一个更好的解决方案。

答案 1 :(得分:1)

您要寻找的是trait。这样可以轻松共享代码和功能,而不必从引起继承地狱的特定基类继承。

namespace MyCode\Traits;

trait SharedCodeForThing {
   public function blaTheBla() {
       dump("if this shows up, then the code works");
   }
}

然后在您的控制器中

use  MyCode\Traits\SharedCodeForThing ;
class MyController extends Controller
{
    use SharedCodeForThing;
}

现在,如果您只想呈现看起来像在的视图内容:

public function test(Request $request)
    {
        if($request->input('name') == "chair")
        {
            $view = view('resources.views' . $request->input('name'));
            return $view->render();//or echo $view->render(); whatever you like
        }
    }