2015-07-18 29 views
11

Aşağıdaki kodum var,laravel'de Request değerleri nasıl değiştirilir?

Sorum, istek değerleri nasıl değiştirilir?

public function store(CategoryRequest $request) 
{ 
    try { 
     $request['slug'] = str_slug($request['name'], '_'); 
     if ($request->file('image')->isValid()) { 
      $file = $request->file('image'); 
      $destinationPath = public_path('images/category_images'); 
      $fileName = str_random('16') . '.' . $file->getClientOriginalExtension(); 
      $request->image = $fileName; 
      echo $request['image']; 
      $file->move($destinationPath, $fileName); 
      Category::create($request->all()); 
      return redirect('category'); 
     } 
    } catch (FileException $exception) { 
     throw $exception; 
    } 
} 

Fakat her istek üzerine

echo $request['image']; 

çıktısı verir/tmp gibi bazı metin/phpDPTsIn

cevap

22

$request nesnesindeki merge() yöntemini kullanabilirsiniz.

yöntemleri adı rağmen
public function store(CategoryRequest $request) 
{ 
    try { 
     $request['slug'] = str_slug($request['name'], '_'); 
     if ($request->file('image')->isValid()) { 
      $file = $request->file('image'); 
      $destinationPath = public_path('images/category_images'); 
      $fileName = str_random('16') . '.' . $file->getClientOriginalExtension(); 
      $request->merge([ 'image' => $fileName ]); 
      echo $request['image']; 
      $file->move($destinationPath, $fileName); 
      Category::create($request->all()); 
      return redirect('category'); 
     } 
    } catch (FileException $exception) { 
     throw $exception; 
    } 
} 

, aslında parametrenin tuşları ile belirtilen ziyade birleştirerek üyelerin isimlerinin ilişkili tüm değerleri yerine geçer: Bkz: gibi Kodunuzda https://laravel.com/api/5.2/Illuminate/Http/Request.html#method_merge

, o olmazdı Onların değerleri ya da bunun gibi bir şey.

6

Sen

$request->image = ... 
kullanarak yeni bir dosya adı ayarlıyorsunuz

ama sonra Request sınıfının dizi erişilebilir arabirimini kullanarak onu tekrar alıyorsunuz.

$request['file'] = ... 

kullanarak dosya adını ayarlamak veya Request sınıfının merge() yöntemini kullanmayı deneyin.

+0

Hatta $ istek çalıştı ['image'] = $ dosyaAdı; ama çalışmıyor –

+2

Gerçekten '$ request' değişkeni değiştirmeniz gerekiyor mu? Neden giriş değerlerini başka bir değişkene almıyorsunuz ve sonra bunu değiştirmiyorsunuz? –

+0

Evet Girişi değiştirdim ve işe yarıyor. Teşekkürler :-) –