Ошибка Laravel "Класс 'App \ Http \ Controllers \ DateTime' не найден" - PullRequest
0 голосов
/ 29 августа 2018
public function recover(Request $request){
    $email = $request->input('email');
    // Create tokens
    $selector = bin2hex(random_bytes(8));
    $token = random_bytes(32);

    $url = sprintf('%s',  route('recover.reset',['selector'=>$selector, 'validator'=>bin2hex($token)]));

    // Token expiration
    $expires = new DateTime('NOW');
    $expires->add(new DateInterval('PT01H')); // 1 hour

    // Delete any existing tokens for this user
    DB::delete('delete * from password_reset where email =?', $email);

    // Insert reset token into database
    $insert = $this->db->insert('password_reset', 
        array(
            'email'     =>  $email,
            'selector'  =>  $selector, 
            'token'     =>  hash('sha256', $token),
            'expires'   =>  $expires->format('U'),
        )
    );

Пытаюсь реализовать забытый пароль когда форма электронной почты отправлена ​​на ForgotPasswordController генерирует следующую ошибку

"Приложение класса" \ Http \ Controllers \ DateTime 'не найдено "

Это изображение контроллера, приведенного выше кода не существует, я не могу изменить его RecoverPasswordController Image

В заголовке я попытался использовать

use DateTime;

Или

use App\Http\Controllers\DateTime

Но все равно выдает ту же ошибку пожалуйста, помогите исправить это. заранее спасибо

Ответы [ 3 ]

0 голосов
/ 29 августа 2018

Над определением класса импортируйте класс с помощью оператора use.

use DateTime;

Альтернативой этому является использование полностью определенного пространства имен в вашем коде. С PHP-классами в глобальном пространстве имен все это означает, что перед именем класса стоит одна обратная косая черта:

$expires = new \DateTime('NOW');

Я предпочитаю первый подход, поскольку он позволяет сразу увидеть все классы, используемые в этом файле.

0 голосов
/ 29 августа 2018

Добавить обратную косую черту \ (для определения root namespace)

$dateTime = new \DateTime();

также вы можете использовать классы

use DateTime;
use DatePeriod;
use DateInterval;
0 голосов
/ 29 августа 2018

DateTime - объект PHP, поэтому вы можете объявить его с помощью косой черты до:

new \DateTime();

Или объявить его перед использованием и создать экземпляр позже:

use DateTime;

class Etc
{
    public function test()
    {
        $datetime = new DateTime();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...