2015-12-26 14 views
11

Laravel'de yeni ve laravel versiyon 5.2 kullanıyorum. Tanımsız değişken: hatalar - Laravel 5.2

bir kontrolör oluşturulan ve sırasıyla ArticlesController ve CreateArticleRequest olarak adlandırılan istek ve bir doğrulama kuralları tanımlandığı gibidir.

CreateArticleRequest

<?php 

namespace App\Http\Requests; 

use App\Http\Requests\Request; 

class CreateArticleRequest extends Request 
{ 
    public function authorize() 
    { 
     return true; 
    } 

    public function rules() 
    { 
     return [ 
      'title' => 'required|min:3', 
      'body' => 'required|max:400', 
      'published_at' => 'required|date', 
     ]; 
    } 
} 

add.blade.php olarak adlandırılan Şablonumdaki değişken hataları o hata tanımsız değişken göstermek

<?php 

namespace App\Http\Controllers; 

use App\Article; 
//use Illuminate\Http\Request; 

use App\Http\Requests; 
use App\Http\Controllers\Controller; 
use Carbon\Carbon; 
use App\Http\Requests\CreateArticleRequest; 

class ArticlesController extends Controller 
{ 

    public function add(){ 
     return view('articles.add'); 
    } 

    public function create_article_row(CreateArticleRequest $request){ 
     Article::create($request->all()); 
     return redirect('articles/'); 
    } 
} 

i $ kullanmak ArticlesController: $ hataları Sorunu çözmeye çalıştım lem ama yapmadım. Lütfen bana yanlış olduğumu söyle. Bu kod ile add.blad.php

{{ var_dump($errors) }} 

Click here to see Error Image

+0

'isset' ile temel bir kontrol yapın, bu nedenle ayarlanmamışsa değişken yankılanmıyor. –

+1

@ MichaelSørensen Bu Laravel, değişkenin her zaman tüm görünümlerde mevcut olması gerekiyordu. Dolayısıyla eğer bir görünümde ayarlanmamışsa, büyük olasılıkla küresel olarak ele alınması gereken bir problemdir. –

+0

@ MichaelSørensen ben laravel öğreticileri takip ediyorum ve orada aynı işi yaptım ama bunu undefined değişkeni $ hataları gösterir ve ben de isset ($ error) denetimi ile çalıştı ama doğrulama üzerinde herhangi bir hata göstermiyor. –

cevap

28

Bu 5.2 yükseltme ile bir kırılma sorunudur. Neler yapılıyor? errors değişkeninin tüm görünümlerinizde kullanılabilir olmasını sağlamak için kullanılan middleware, global middleware'den web ara katman grubuna taşındığı için kullanılmıyor. (App/Http/Kernel.php), geri protected $middleware özelliğine middleware \Illuminate\View\Middleware\ShareErrorsFromSession::class taşıyabilirsiniz kernel.php dosyasında

  1. :

    Bunu düzeltmek için iki yol vardır.

  2. Örtecek bir rota grup ile tüm web yolları ve bunlara web ara katman uygulanır: Bu yayından Kopyalanan

    Route::group(['middleware' => 'web'], function() { 
        // Place all your web routes here...(Cut all `Route` which are define in `Route file`, paste here) 
    }); 
    

Laravel 5.2 $errors not appearing in Blade

+0

Ekran görüntüleri ile aynı çözüm bu bağlantıda bulunabilir: http://preprogrammer.com/undefined-variable-errors-in-laravel-5-2-solved/ –

-2

, hataları yakalamak ve bunları görüntüleyebilir:

@if ($errors->any()) 
<div class='alert alert-danger'> 
    @foreach ($errors->all() as $error) 
    <p>{{ $error }}</p> 
    @endforeach 
</div> 
@endif 
+0

evet bu şekilde hata mesajını yakalayabiliriz ama bu benim sorunum değil. Benim sorunum şu tür bir hata ile karşılaşıyorum: undefined variable $ errors. Soruyu dikkatli bir şekilde okuyun. –

+1

Belki bu size yardımcı olabilir: http://stackoverflow.com/questions/34420590/laravel-5-2-validation-errors – Kokno

+0

@Kokno'nun yorumu muhtemelen bir cevap olmalıdır .. bağlantıdaki yanıt çok iyi bir şekilde açıklıyor 5,1'den 5,2'ye değişti. – mikey

1

Sadece tüm yolları kesti Rotalardanphp dosyası aynen böyle, ara katman grubunun web 'arasına yapıştırın ve: diğerleri için yararlı olabilir olarak

Routes file

+0

bunu yaparken bana bir FatalErrorException' - 'null'daki bir üye fonksiyon parametrelerini() çağırır. –

4

bu Gönderme,

Praveen sizin Kernel.php yılında, 1 çözeltide belirtildiği gibi dosya (app/Http/Kernel.php)

Bu hareketi gidermek için, protected $middleware mülke $middlewareGroups den \Illuminate\View\Middleware\ShareErrorsFromSession::class taşımak ancak aynı "Oturum mağaza istek üzerine ayarlanmadı" hatası atma başlayacak \Illuminate\Session\Middleware\StartSession::class, da $middleware property için.

+0

'middleware özelliği nedir? –

0

5.2 için, sadece bu yüzden mapWebRoutes yöntemi uygulanmadı yok, grup

2

dosya aşağıdaki besteci güncelleme işlemi güncelleme olmadığı için bu durum katman için değişken hata var yolları taşıyın.

app/Providers/RouteServiceProvider.php 

Bu dosyayı yeni bir yüklemeden kopyalayın ve işe yarayacaktır. Daha iyi, dokümanlardaki yükseltme yolunu izleyin.