我正在使用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 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缓存,则可以正常运行.
Pagination::make() Laravel 5中的方法在Pagination类中不存在.
是否有解决方法在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 …
我目前有一个具有文本字段和段塞字段的模型.
我验证了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?
问题很简单 - 是否可以以任何智能方式扩展Laravel 5功能,或者你需要复制很多代码/类只是为了实现你想要的.
因为它相当广泛,我会举两个例子.
1)我想更改URL edit和createfor \Illuminate\Routing\ResourceRegistrar.目前,我发现实现这一目标的唯一方法是:扩展主要的Illuminate Application以传递自己RoutingServiceProvider,然后扩展Router,然后扩展Illuminate\Routing\ResourceRegistrar并最终bootstrap/app.php使用我们的扩展Application类.相当多的修改只是为了改变2行.事实上,许多方法都是重复的,只是为了传递我们的自定义类,除了使用其他命名空间中的类之外,哪些代码完全相同
2)其他类似的更改 - 为缓存配置设置自定义路径 - 您需要再次扩展 Application到覆盖方法getCachedConfigPath,然后进行更改bootstrap/app.php
所以问题是 - 是否需要进行某些修改或者可能相同(例如上面的那些)可以实现更方便的扩展核心Application类并进行如此多的更改?
我想知道是否有一种简单的方法来覆盖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,如果这有任何区别.)
我有一个具有该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_at和updated_at都0000-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) 我想用laravel eloquent执行以下句子
SELECT *, count(*) FROM reserves group by day
Run Code Online (Sandbox Code Playgroud)
我唯一的解决方案就是在数据库中创建一个视图,但我很确定有一种方法可以用laravel方式来实现.
我在 AWS 上有一个生产系统并使用 Laravel Forge。有一个正在处理作业的默认队列。
我已经创建了许多作业,现在希望删除它们(因为它们需要很多小时才能完成,而且我意识到我的输入数据很糟糕)。我创建了一个具有良好数据的新作业,但只有在所有其他作业完成后才会对其进行处理。
如何删除所有作业?
redis它之前是使用队列驱动程序设置的。我不知道如何删除作业,因此我将驱动程序切换到database,并重新启动服务器,认为这至少会让作业停止处理。然而,令我沮丧的是,它们仍在继续处理:-(
我什至从 forge ui 中删除了工作程序并重新启动了服务器:作业仍在处理。
为什么作业会继续被处理?
我怎样才能阻止他们?
laravel ×10
laravel-5 ×7
php ×6
laravel-5.2 ×3
eloquent ×2
artisan ×1
laravel-7 ×1
pagination ×1