4

我通过以下链接创建了一个工匠命令来清除应用程序缓存

http://code.tutsplus.com/tutorials/your-one-stop-guide-to-laravel-commands--net-30349

我试图在我的仪表板控制器中调用它,如下所示

namespace ABC;

class DashboardController extends \BaseController {

    /**
     * Display a listing of the resource.
     *
     * @return Response
     */
    var $viewContent = [];

    public function index() {
        //Method one
        \Artisan::call('command:clearCache');

        //Method two
        $console=new \Illuminate\Console\Application;
        $console->call('command:clearCache');
        //Other function goes here

    }
 }

我对上面的代码有异常(上面代码中的方法一):

调用未定义的方法 Illuminate\Support\Facades\Artisan::call() 这意味着门面没有解析给服务提供者。

对于方法二,我得到了以下异常

“命令”命名空间中没有定义任何命令。

我尝试使用 xdebug 对 2 个不同的门面进行调试(其中一个(应用程序门面)在 Artisan 没有正确解析的地方得到解决)。

我对门面及其工作原理知之甚少,但它们来自 laravel 框架,所以帮助较少。

编辑 config/app.php 中的前两行提供程序数组

'providers' => array(
        'Illuminate\Foundation\Providers\ArtisanServiceProvider',

config/app.php 中的前三行别名

 'aliases' => array(
        'App' => 'Illuminate\Support\Facades\App',
        'Artisan' => 'Illuminate\Support\Facades\Artisan',
4

3 回答 3

2

谢谢您的帮助。

我没有按照我想要的方式工作,但我在这里添加了一个对我有用的解决方案。希望它对其他人有用

    global $app;
    $artisan = new \Illuminate\Foundation\Artisan($app);
    $artisan->call('command:clearCache');

我检查了我的所有外观,发现几个外观 [Auth, Artisan] 没有正确解析。

希望它会有所帮助。

于 2015-02-09T12:04:56.353 回答
2

只是为了帮助任何可能与我有同样问题的人。我只是在调用 Artisan 时遇到了麻烦,但我收到了与 OP 相同的错误消息。

它最终成为一个权限问题。重置 Storage 和 Artisan 文件本身的权限解决了这个问题。

我不知道权限如何或为什么改变。

于 2015-05-18T19:01:48.307 回答
1

像这样试试

\Artisan::call('clearCache');

您可以将任何参数作为第二个参数传递

Artisan::call('clearCache', array('--paramname' => 'value'));
于 2015-02-04T09:58:54.340 回答