Bu, Laravel 4'ün bir çoğunun benim için yeni olduğu gibi bir aptal soru ise özür dileriz. Kendi parola doğrulama kurallarını tanımlamak (gönderme sırasında çekirdeğe kodlanmış) tanımlamak ve hata raporlama yöntemini ($ errors dizisinde kullanılan) değiştirmek istediğim için temel parola işlevindeki birkaç yöntemi geçersiz kılmaya çalışıyorum. oturum temelli değil, diğer formlar. Bir core Laravel 4 sınıf yöntemini geçersiz kılın.
Yani benim yaklaşım yeni bir sınıf yaratmaktı/app/lib/Projem şöyle Password.php denilen/Kullanıcı içinde: Ben den sıfırlama yöntemini kopyaladık<?php namespace MyProject\User;
use Closure;
use Illuminate\Mail\Mailer;
use Illuminate\Routing\Redirector;
use Illuminate\Auth\UserProviderInterface;
class Password extends \Illuminate\Support\Facades\Password
{
/**
* Reset the password for the given token.
*
* @param array $credentials
* @param Closure $callback
* @return mixed
*/
public function reset(array $credentials, Closure $callback)
{
// If the responses from the validate method is not a user instance, we will
// assume that it is a redirect and simply return it from this method and
// the user is properly redirected having an error message on the post.
$user = $this->validateReset($credentials);
if (! $user instanceof RemindableInterface)
{
return $user;
}
$pass = $this->getPassword();
// Once we have called this callback, we will remove this token row from the
// table and return the response from this callback so the user gets sent
// to the destination given by the developers from the callback return.
$response = call_user_func($callback, $user, $pass);
$this->reminders->delete($this->getToken());
return $response;
}
}
/satıcı/laravel /framework/src/Illuminate/Auth/Reminders/PasswordBroker.php, çekirdek şifre cephesinin nerede çözüleceği gibi görünüyor.
Sonra composer.json dosyasında, ben ekledim
autoload için aşağıdaki: ClassMap dizi:"app/lib/MyProject/User"
Son olarak, benim /app/config/app.php dosyasında ben tadil ettik Parola diğer adı:
'Password' => 'MyProject\User\Password',
Tamam. Benim routes.php dosyasında hemen hemen dokümanlardan düz alınır takipçileriniz var:
Route::post('password/reset/{token}', function()
{
$credentials = array('email' => Input::get('email'));
return Password::reset($credentials, function($user, $password)
{
$user->password = Hash::make($password);
$user->save();
return 'saved - login';
});
});
zaman bu sıfırlama() yöntemi aşağıdaki hatayı alıyorum, çalıştırır:
Non-static method MyProject\User\Password::reset() should not be called statically
sıfırlama() yöntemi genişletmekte olduğum sınıf statik değil, bu yüzden beni şaşırttı, ancak sıfırlama yöntemimi statik olarak ayarlayarak bu hatayı temizler.
Using $this when not in object context
$ this-> validateReset ($ kimlik) çalıştırmak çalışırken gelir: Sonraki olsa aşağıdaki hatayı alıyorum.
Artık tamamen derinliğim bitti. Bunu doğru yoldan mı yoksa tamamen doğru yoldan mı geçiyorum? Herhangi bir tavsiye
bunu çözdünüz mü? Öyleyse - lütfen cevap veya yorum gönderebilir misiniz? Teşekkürler – Laurence
Hayır Korkarım ki yapmadım. Başlangıçta Laravel/Laravel projesinde GitHub ve daha sonra Laravel/Framework projesinde bir sorun kaydettim. Taylor dupe olarak kapatıldı şimdi yeniden açmak için gidiyorum bu yüzden, yanlış düşünüyorum: https://github.com/laravel/framework/issues/1672 –
bu * hala * bir sorun (ya da en azından bir şey size mi' d) bir cevap gibi? Muhtemelen gördüğünüz davranışları açıklayabilirim ve belki bir çözüm önerebilirim. Ama sanırım bu çok yaşlı, artık umursamıyor ya da tamir etmiyorsun. – alexrussell