我在自定义应用中遇到此错误:
InvalidArgumentException in UrlGenerator.php line 304:
Route [password.reset] not defined.
Run Code Online (Sandbox Code Playgroud)
我知道laravel提供了开箱即用的密码重置功能,但我想编写自己的类和路由.
这是我在web.php中的路线
// Password reset link request routes...
Route::get('password/email', 'Auth\PasswordController@getResetEmail');
Route::post('password/email', 'Auth\PasswordController@postResetEmail');
// Password reset routes...
Route::get('password/reset/{token}', 'Auth\PasswordController@getReset');
Route::post('password/reset', 'Auth\PasswordController@postReset');
Run Code Online (Sandbox Code Playgroud)
这是我的PasswordController:
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Contracts\Auth\Guard;
use Illuminate\Contracts\Auth\PasswordBroker;
use Illuminate\Foundation\Auth\ResetsPasswords;
class PasswordController extends Controller {
use ResetsPasswords;
/**
* Create a new password controller instance.
*
* @param \Illuminate\Contracts\Auth\Guard $auth
* @param \Illuminate\Contracts\Auth\PasswordBroker $passwords
* @return void
*/
public function __construct(Guard $auth, PasswordBroker $passwords)
{
$this->auth = $auth;
$this->passwords …Run Code Online (Sandbox Code Playgroud) 我有这个代码:
function test(...$strings)
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
它允许我像这样调用 test() :
test('a', 'series of', 'strings go here');
Run Code Online (Sandbox Code Playgroud)
这有效。然而,我经常想做:
test([ 'a', 'series of', 'strings go here' ]);
Run Code Online (Sandbox Code Playgroud)
或者:
test($an_array_of_strings);
Run Code Online (Sandbox Code Playgroud)
事实上,我非常确定这有效,以至于当我开始收到有关“数组到字符串转换”的错误时,我感到震惊和困惑。
我的意思是,“...”语法是一种特殊的语言构造,专门用于将函数的可变数量的参数转换为数组!我什至不明白为什么它不会自动理解这种非常常见/有用的做法。
既然它(显然)没有,是否有某种方法可以完成此任务而不必使用两个单独的函数?我不想要一个单独的:
function test_array($strings = [])
{
// ...
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试通过破坏分配方法来传递功能组件道具。
在下面的示例中,我尝试使用此概念,但是它不起作用。此代码的结果返回空,并且不打印该道具。
import React from 'react';
import { render } from 'react-dom';
const App = ({ username: name }) => (<h1>{username}</h1>)
render(
<App name="Tom" />,
document.getElementById('root')
);
Run Code Online (Sandbox Code Playgroud)
有关如何处理此问题的任何想法?
我真的很感谢这方面的帮助。我尝试了其他人在其他帖子上建议的所有解决方案,包括:Laravel 5.5 ajax调用419(未知状态)和此Ajax LARAVEL 419 POST错误解决方案。
但是,即使在头部设置了csrf_token元标记,我仍然会收到419错误:
<meta name="csrf-token" content="{{ csrf_token() }}">
Run Code Online (Sandbox Code Playgroud)
在ajax发布调用之前,我像这样设置ajax csrf_token:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
Run Code Online (Sandbox Code Playgroud)
之后,我将ajax数据中的csrf_token作为变量发送,如下所示:
$.ajax({
url : "/getCompare",
type :"POST",
cash : false,
data :{ id : id,_token: '{{csrf_token()}}'},
success :
function( response ) {
$("#compare_products").html(response);
}
});
Run Code Online (Sandbox Code Playgroud)
页面的应用方式使用户反复请求ajax调用以比较产品。它在很多尝试下都可以正常工作,但是在特定情况下,会引发419错误。这种情况有时是当我在页面加载后大约3分钟按下一个按钮时,出现了这个错误。有时它会在第三次或第四次尝试时给出错误。重新加载页面后,问题已解决,但仍然按照我解释的方式再次发送该错误。
我的问题是为什么会这样?是3分钟后csrf_token过期还是什么?而且我不想在verifyCsrfToken中间件中添加异常。该问题的解决方案是什么?
PS: leorent的答案是正确的。但是将我的项目上传到实际的在线服务器后。问题已经解决了。我不知道为什么,但是这个问题是因为Windows和在本地主机中本地运行laravel项目。csrf令牌会话在寡妇localhost服务器上经常过期。不用担心,将项目上传到实际服务器后,您的csrf问题将自动得到解决。
php ×3
ajax ×1
ecmascript-6 ×1
function ×1
javascript ×1
jquery ×1
laravel ×1
laravel-5.4 ×1
laravel-5.5 ×1
reactjs ×1
splat ×1