小编Mar*_*łek的帖子

HtmlServiceProvider.php第36行中的FatalErrorException:laravel

我正在使用laravel 5.2并且我在HtmlServiceProvider.php第36行中遇到错误FatalErrorException:调用未定义的方法Illuminate\Foundation\Application :: bindShared()

我的app.php文件是

<?php

return [


    'env' => env('APP_ENV', 'production'),


    'debug' => env('APP_DEBUG', false),


    'url' => 'http://localhost',


    'timezone' => 'UTC',


    'locale' => 'en',


    'fallback_locale' => 'en',


    'key' => env('APP_KEY'),

    'cipher' => 'AES-256-CBC',


    'log' => env('APP_LOG', 'single'),


    'providers' => [

        /*
         * Laravel Framework Service Providers...
         */
        Illuminate\Auth\AuthServiceProvider::class,
        Illuminate\Broadcasting\BroadcastServiceProvider::class,
        Illuminate\Bus\BusServiceProvider::class,
        Illuminate\Cache\CacheServiceProvider::class,
        Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class,
        Illuminate\Cookie\CookieServiceProvider::class,
        Illuminate\Database\DatabaseServiceProvider::class,
        Illuminate\Encryption\EncryptionServiceProvider::class,
        Illuminate\Filesystem\FilesystemServiceProvider::class,
        Illuminate\Foundation\Providers\FoundationServiceProvider::class,
        Illuminate\Hashing\HashServiceProvider::class,
        Illuminate\Mail\MailServiceProvider::class,
        Illuminate\Pagination\PaginationServiceProvider::class,
        Illuminate\Pipeline\PipelineServiceProvider::class,
        Illuminate\Queue\QueueServiceProvider::class,
        Illuminate\Redis\RedisServiceProvider::class,
        Illuminate\Auth\Passwords\PasswordResetServiceProvider::class,
        Illuminate\Session\SessionServiceProvider::class,
        Illuminate\Translation\TranslationServiceProvider::class,
        Illuminate\Validation\ValidationServiceProvider::class,
        Illuminate\View\ViewServiceProvider::class,
        'Illuminate\Html\HtmlServiceProvider',

        /*
         * Application Service Providers...
         */
        App\Providers\AppServiceProvider::class,
        App\Providers\AuthServiceProvider::class,
        App\Providers\EventServiceProvider::class,
        App\Providers\RouteServiceProvider::class, …
Run Code Online (Sandbox Code Playgroud)

laravel laravel-routing laravel-5.2

13
推荐指数
2
解决办法
1万
查看次数

Laravel 5.2:Auth :: logout()不起作用

我正在Laravel 5.2中构建一个非常简单的应用程序,但是当使用AuthController的操作注销时,它只是不起作用.我有一个导航栏,它会检查Auth::check()并在调用注销操作后不会更改.

我在routes.php文件中有这个路由:

Route::get('users/logout', 'Auth\AuthController@getLogout');

它在外面

Route::group(['middleware' => ['web']], function () 声明.

我也尝试在AuthController.php文件的末尾添加跟随操作.

public function getLogout() 
{
    $this->auth->logout();
    Session::flush();
    return redirect('/');
}
Run Code Online (Sandbox Code Playgroud)

你有什么想法?

编辑1

如果我清除Google的Chrome缓存,则可以正常运行.

php laravel laravel-5 laravel-5.2 laravel-authorization

13
推荐指数
2
解决办法
3万
查看次数

Laravel 5 - 手动分页

Pagination::make() Laravel 5中的方法在Pagination类中不存在.

是否有解决方法在Laravel 5中进行手动分页工作?

pagination laravel laravel-5 laravel-pagination

12
推荐指数
2
解决办法
1万
查看次数

Laravel 5配置 - 环境和覆盖

我安装了新的Laravel 5副本.

我的detectEnvironment函数是这样定义的:

$app->detectEnvironment(function()
{
    return 'local';
    return getenv('APP_ENV') ?: 'production';
});
Run Code Online (Sandbox Code Playgroud)

config\local我创建的database.php文件中:

<?php

return [
    'nothing' => 'new',
];
Run Code Online (Sandbox Code Playgroud)

我跑php artisan clear-compiled.

我的index方法WelcomeController是这样定义的:

public function index(Application $app)
{
    echo $app->environment();
    var_dump($app['config']['database']);
    //echo $app['config']['database'];
    return view('welcome');
}
Run Code Online (Sandbox Code Playgroud)

应用程序以这种方式导入: use Illuminate\Foundation\Application;

我得到的结果是:

local array(1) { ["nothing"]=> string(3) "new" } 
Run Code Online (Sandbox Code Playgroud)

而我希望Laravel能够将配置文件与生产程序级联(使用默认config\database.php文件).

奇怪的是,即使我return 'local';再次评论该行,php artisan clear-compiled它显示:

production array(1) { ["nothing"]=> string(3) "new" } 
Run Code Online (Sandbox Code Playgroud)

所以它似乎总是加载database.php文件内容(这一个来自本地文件夹)并覆盖主database.php …

php laravel laravel-5 laravel-environment

12
推荐指数
2
解决办法
1万
查看次数

在Laravel 5中验证Update上的唯一Slug

我目前有一个具有文本字段和段塞字段的模型.

我验证了slug在我的表单请求类中是唯一的:

public function rules()
{
    return [
        'name' => 'required|min:3',
        'slug' => 'required|alpha_dash|unique:questions'
    ];
}
Run Code Online (Sandbox Code Playgroud)

这在创建时工作正常,并且正确地拒绝创建重复的slugs.但是在我的更新方法中,它不会让我保存记录,因为slug已经存在.当然slug确实存在,但它存在于正在编辑的记录中,所以我想继续允许它被保存.但是,它不应该被改为另一个记录上的slu ..

这是我的更新ArticlesController方法的样子:

public function update(Article $article, ArticleRequest $request)
{
    $article->update($request->all());

    return redirect('articles');
}
Run Code Online (Sandbox Code Playgroud)

有没有办法让这个工作在L5?

php laravel laravel-5 laravel-validation laravel-request

12
推荐指数
2
解决办法
9203
查看次数

扩展核心Laravel 5功能

问题很简单 - 是否可以以任何智能方式扩展Laravel 5功能,或者你需要复制很多代码/类只是为了实现你想要的.

因为它相当广泛,我会举两个例子.

1)我想更改URL editcreatefor \Illuminate\Routing\ResourceRegistrar.目前,我发现实现这一目标的唯一方法是:扩展主要的Illuminate Application以传递自己RoutingServiceProvider,然后扩展Router,然后扩展Illuminate\Routing\ResourceRegistrar并最终bootstrap/app.php使用我们的扩展Application类.相当多的修改只是为了改变2行.事实上,许多方法都是重复的,只是为了传递我们的自定义类,除了使用其他命名空间中的类之外,哪些代码完全相同

2)其他类似的更改 - 为缓存配置设置自定义路径 - 您需要再次扩展 Application到覆盖方法getCachedConfigPath,然后进行更改bootstrap/app.php

所以问题是 - 是否需要进行某些修改或者可能相同(例如上面的那些)可以实现更方便的扩展核心Application类并进行如此多的更改?

php laravel laravel-5

12
推荐指数
1
解决办法
1352
查看次数

在Laravel容器中覆盖Singleton

我想知道是否有一种简单的方法来覆盖Laravel框架核心中的单件服务集?

例如,我正在尝试使用以下提供程序重写app:name命令服务'':

use Hexavel\Console\AppNameCommand;
use Illuminate\Console\Events\ArtisanStarting;
use Illuminate\Contracts\Events\Dispatcher;
use Illuminate\Support\ServiceProvider;

class NameCommandProvider extends ServiceProvider
{
    /**
     * Register any other events for your application.
     *
     * @param  \Illuminate\Contracts\Events\Dispatcher  $events
     * @return void
     */
    public function boot(Dispatcher $events)
    {
        $events->listen(ArtisanStarting::class, function ($event) {
            $event->artisan->resolve('command.app.name');
        }, -1);
    }

    /**
     * Register the service provider.
     *
     * @return void
     */
    public function register()
    {
        $this->app->singleton('command.app.name', function ($app) {
            return new AppNameCommand($app['composer'], $app['files']);
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

我100%一切都在工作,因为无论我把服务提供商放在什么顺序(上面或下面的ConsoleSupportServiceProvider),它仍会加载原始的AppNameCommand而不是我自定义的一个.

我已经有了一个解决方案,但如果可能的话,了解未来单身人士服务的行为会很好吗?(这是使用Laravel 5.2,如果这有任何区别.)

php laravel laravel-5 artisan laravel-5.2

12
推荐指数
2
解决办法
4522
查看次数

Laravel timestamps()不会创建CURRENT_TIMESTAMP

我有一个具有该timestamps()方法的迁移,然后我有一个种子来播种该表.

Schema::create('mytable', function (Blueprint $table) {
    $table->increments('id');
    $table->string('title');
    $table->timestamps();
});
Run Code Online (Sandbox Code Playgroud)

种子看起来像这样:

DB::table('mytable')->insert([
    [
        'title' => 'My Awesome Title'
    ]
]);
Run Code Online (Sandbox Code Playgroud)

当它全部运行时使用:

php artisan migrate:refresh --seed
Run Code Online (Sandbox Code Playgroud)

该项目被插入,但值created_atupdated_at0000-00-00 00:00:00那他们为什么不正确?

这是它创建的列方案:

`created_at` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
`updated_at` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
Run Code Online (Sandbox Code Playgroud)

我想要这些方案:

`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
Run Code Online (Sandbox Code Playgroud)

php laravel eloquent laravel-seeding laravel-migrations

12
推荐指数
2
解决办法
3万
查看次数

如何使用laravel eloquent获得"select count(*)group by"

我想用laravel eloquent执行以下句子

SELECT *, count(*) FROM reserves  group by day
Run Code Online (Sandbox Code Playgroud)

我唯一的解决方案就是在数据库中创建一个视图,但我很确定有一种方法可以用laravel方式来实现.

query-builder laravel eloquent laravel-5

12
推荐指数
2
解决办法
3万
查看次数

Laravel 7 - 停止处理作业并清除队列

我在 AWS 上有一个生产系统并使用 Laravel Forge。有一个正在处理作业的默认队列。

我已经创建了许多作业,现在希望删除它们(因为它们需要很多小时才能完成,而且我意识到我的输入数据很糟糕)。我创建了一个具有良好数据的新作业,但只有在所有其他作业完成后才会对其进行处理。

如何删除所有作业?

redis它之前是使用队列驱动程序设置的。我不知道如何删除作业,因此我将驱动程序切换到database,并重新启动服务器,认为这至少会让作业停止处理。然而,令我沮丧的是,它们仍在继续处理:-(

我什至从 forge ui 中删除了工作程序并重新启动了服务器:作业仍在处理。

为什么作业会继续被处理?

我怎样才能阻止他们?

laravel laravel-forge laravel-queue laravel-7

11
推荐指数
1
解决办法
4万
查看次数