Monthly Archives: April 2014

Uploading Multiple Files

Just decided to share a solution for uploading multiple files via Laravel as i have spent some time today on researching on why my code doesn’t work when I am doing everything mentioned in the Laravel API. The problem was that the “multiple” attribute of the file input is not enough to trigger sending an array of files to the controller.

So my solution is below. Of course this is far from a good one, but I decided to post it as i spent about 3 hours reading about different types of errors and why they should be happening as well as different solutions in order to find out I need this simple “[ ]” added at the end of the name attribute value.

I will constantly improve this with adding code for validating the form as well as other stuff so bear with me.

View:

@extends(‘layouts.default’)
@section(‘content’)
<h1>Adding product image(s)</h1>
{{ Form::open([‘route’ => ‘products.store’, ‘files’ => true]) }}

<div class=”form_row”>
{{ Form::label(‘prod_img[]’, ‘Product Pictures: ‘); }}
{{ Form::file(‘prod_img[]’, [‘multiple’]); }}
{{ $errors->first(‘prod_img’); }}
</div>

{{ Form::submit(‘Add product’); }}
{{ Form::close() }}
@stop

Controller:

inside of the controller class I have

public function store()
{

//path to the project folder you want to put your images

$path = public_path() . “\assets\images\products\\”;
File::makeDirectory($path);

//getting the images to upload

$files = Input::file(‘prod_img’);

foreach($files as $file)
{
$fileName = $file->getClientOriginalName();
$file->move($path, $fileName);
}

return Redirect::route(‘products.index’);

}

Laravel – Default Routing

Докато започвах да работя по онлайн магазин, който правя в момента, забелязах, че в темплейта на Laravel, който се инсталира чрез Composer, липсва handler за случая, когато няма точно определна страница, която да се изисква, а просто трябва да се покаже страницата по подразбиране.

Изчетох доста информация по въпроса и открих, че всичко е от факта, че няма route, който да се задейства по подразбиране.

Реших проблема, като в routes.php файла в app папката добавих следния код:

Route::get(‘/’, function()
{
    return ‘Welcome!<br /><a href=”‘. Request::url() . ‘/hello”>hello</a><br /><a href=”‘. Request::url() . ‘/users”>users</a>';
});

След като изтествах как работи, винаги когато нямам точно определена страница зададена в URL-a, ми се зарежда текста между двата крайни апострофа. Според сайта на Laravel и няколко форума, Request::url() ми връща текущото URL, което в случая трябва да бъде точно основното такова на сайта. Така и става, като това нещо ми осигурява правилни линкове към останалите страници, които ще ползвам.

Разбира се това е само пример и вместо този код впоследствие ще има темплейтен код генериращ ми нещата който ми трябват, но споделям информацията, в случай, че има и други начинаещи в разработката с Ларавел, който се питат защо получават грешки при Run-ване на темплейтния код след инсталиране на Ларавел през Composer.

Ако имате предложения за други варианти, работещи по-добре и ефективно за целите ми, ще се радвам да споделите като коментар под поста….:)