Ben laravel 5'te laravel 5.AJAX hatalarını Laravel denetleyicisinden nasıl iade edilir?
ile REST API inşa ediyorum, belirli bir rota işlenecektir önce yerine getirilmesi gereken doğrulama kuralları tanımlamak için App\Http\Requests\Request
alt sınıf. Örneğin:
<?php
namespace App\Http\Requests;
use App\Http\Requests\Request;
class BookStoreRequest extends Request {
public function authorize() {
return true;
}
public function rules() {
return [
'title' => 'required',
'author_id' => 'required'
];
}
}
bir istemci AJAX isteği ile ilgili yol yükler ve BookStoreRequest
kurallarına uymuyor istek, bu automagicallylar JSON nesnesi olarak hata (ler) döndürür bulursa
{
"title": [
"The title field is required."
]
}
Ancak Request::rules()
yöntem yalnızca doğrulayabilir giriş-ve giriş geçerli olsa bile, başka hata türlü ortaya çıkabilecek. Örneğin, kontrolör açılamaz nedense ama dosya için bir dosyaya yeni kitap bilgilerini yazmak için ihtiyacı olduğunu varsayalım:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Http\Requests\BookCreateRequest;
class BookController extends Controller {
public function store(BookStoreRequest $request) {
$file = fopen('/path/to/some/file.txt', 'a');
// test to make sure we got a good file handle
if (false === $file) {
// HOW CAN I RETURN AN ERROR FROM HERE?
}
fwrite($file, 'book info goes here');
fclose($file);
// inform the browser of success
return response()->json(true);
}
}
Açıkçası, ben sadece die()
olabilir, ama bu süper çirkin. Hata iletimi, doğrulama hatalarıyla aynı biçimde döndürmeyi tercih ederim. Şunun gibi:
{
"myErrorKey": [
"A filesystem error occurred on the server. Please contact your administrator."
]
}
ben kendi JSON nesnesi oluşturmak ve dönüş o-ama emin adımlarla laravel bu doğal destekler olabilir.
Bunu yapmanın en iyi/en temiz yolu nedir? Ya da bir Laravel REST API'sinden çalışma zamanı (validate-time'ın aksine) hatalarını döndürmenin daha iyi bir yolu var mı?
Neden sadece bir "return response() -> json (['error' => 'Özel mesajınız']);'? –
Özel bir json yanıt sınıfı oluşturabilirsiniz – Digitlimit
'dönüş yanıtı() -> json()' 200 Tamam ile döndürür. Uygun olmayan 200 yanıt kodunu kullanmak istiyorum (ör. 500 Dahili Sunucu Hatası). Evet, bunu da el ile yapabilirdim - Laravel'in bunu yapmanın daha yerleşik bir yolunu zaten sağladığını varsaydım. Belki bu yanlış bir varsayımdır. – greenie2600