在Laravel 5.3中注销后,是否没有优雅的解决方案重定向到特定页面?
被调用的函数来自特质AuthenticatesUsers:
public function logout(Request $request)
{
$this->guard()->logout();
$request->session()->flush();
$request->session()->regenerate();
return redirect('/');
}
Run Code Online (Sandbox Code Playgroud)
这是laravel核心的默认函数.所以我必须覆盖我无法编辑核心的整个功能.但是没有一个更简单的解决方案,因为手动注销,刷新和重新生成感觉有点过分.
是否可以使用with方法使用预先加载但是给它另一个名字?就像是:
->with('documents as product', 'documents.documents as categories')
Run Code Online (Sandbox Code Playgroud)
我有一个文档表,可以是产品或类别,渴望加载工作,但不是那么友好,只通过文档名称而不是它真正的文件名来检索文档.
我有一种情况,我在模型上设置了一些自定义属性。这些属性在数据库中不存在。在->isDirty()模型上使用时,我得到了不属于数据库的自定义属性。
在保存模型之前,是否有一些干净的方法可以删除这些属性?
$model = SomeModel::find(1);
$model->database_attribute = 'I exists in the database';
$model->custom_not_in_database_attribute = 'I don\'t exists in the database';
$model->save(); // remove dirty on save?!
Run Code Online (Sandbox Code Playgroud)
我当然可以取消设置它们unset($model->custom_not_in_database_attribute),但我想知道是否有更干净的方法来做到这一点?
类似的东西(不存在) $model->saveOriginalOnly()
我有一个截断字符串的方法。
StringHelper::truncate()
Run Code Online (Sandbox Code Playgroud)
当我在视图中使用此方法时,找不到类StringHelper。我已经将其添加到composer.json并完成了转储自动加载。
当我指定完整路径时,它可以工作:
\App\Http\Helpers\StringHelper
Run Code Online (Sandbox Code Playgroud)
但我想有第一个选择。
我怎样才能做到这一点?AppServiceProvider也许可以,但是如何?
我的路线中有此代码(只是为了让它工作)。
Route::get('/', function () {
$phpunit = new PHPUnit_TextUI_TestRunner;
try {
$test_results = $phpunit->dorun($phpunit->getTest('/var/www/cms/tests/', '', 'Test.php'));
dd($test_results);
} catch (PHPUnit_Framework_Exception $e) {
print $e->getMessage() . "\n";
die ("Unit tests failed.");
}
});
Run Code Online (Sandbox Code Playgroud)
从代码运行测试的代码示例可以在此处找到: 可以从脚本运行 PHPUnit 测试吗?
但是当我运行这个时,我收到错误:异常:不允许“闭包”序列化
我无法弄清楚是什么导致了这个错误。