Skocz do zawartości
jensej

Laravel upload twig.

Polecane posty

Witam.

Od dwóch dni zmagam się z dziwną rzeczą, kod sprawdzałem literka po literce i już nie wiem co jest źle.

Cały czas wywala mi błąd:

Call to a member function getClientOriginalExtension() on a non-object here is my code controller code

Tutaj kod kontrollera.

public function postSubtitle()
{
var_dump(Input::all());
$dupa = Input::file('name');
echo $dupa->getClientOriginalExtension();
}

A tutaj widok (.twig):

{{ form_open({'url': 'video/subtitle', 'files': 'true'}) }}

                    {{ form_file('name', {class: 'form-control'} ) }}
                    {{ form_submit(trans('main.edit'), {class: 'btn btn-lg btn-success btn-block'}) }}
                    {{form_close()}}

 

Edytowano przez jensej (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Encytpe w formie masz ustawione? Input::file() nie zwraca Ci obiektu (Laravela nie używam, nie wiem co pod tą "fasadą" siedzi).

<form method="POST" action="/video/subtitle" accept-charset="UTF-8" enctype="multipart/form-data"><input class="form-control" name="file" type="file">
<input class="btn btn-lg btn-success btn-block" type="submit" value="Edit">
</form>

Kod wygląda ok. Tragedia.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ej, stary, ale w kodzie masz input o nazwie file, a w kontrolerze próbujesz pobrać dane z inputa o nazwie name. http://laravel.com/docs/4.2/requests#files

jest też file, tylko zmieniałem coś i zapomniałem na forum poprawić, jednak i tu i tu dałem file, i nadal nie ma obiektu.

Edytowano przez jensej (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Tam siedzi File z Symfony\HttpFoundation - jeśli masz ustawiony enctype w formie i nazwa inputu się zgadza - to musi działać.

 

Co konkretnie masz w tej zmiennej $dupa?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

$dupa = Input::file('file');

Potem chciałem dostać się do rozszerzenia itp. Ale nie tworzy obiektu.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

kolejno:

var_dump(Input::all());
$dupa = Input::file('file');

 

var_dump($dupa);
wynik:

 

array(0) { } NULL

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Zajmij się najpierw tym że formularz nie wysyła requestu do servera.

Poza tym, według API metoda file() nie zawsze zwraca objekt: http://laravel.com/api/4.2/Illuminate/Http/Request.html#method_file więc najpierw trzeba walidować zwracaną wartość:

if ($dupa instanceof UploadedFile) {
    // ...
}
Edytowano przez Macsch (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Tylko mu file zwraca nulla więc to jest problem a sprawdzenie czy obiekt jest instancją klasy to sprawa wtórna.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

tragedia, nie mam pojęcia co jest nie tak. Cloudflare? yyy, mam użytego tego samego frameworka tylko bez twigbrida w innym projekcie tylko z tą różnicą że tam działa..... Nikt nie ma pomysłu?

Edytowano przez jensej (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Masz jakieś repo do tego? Możesz dać jakiś dostęp read-only? Ciekawe, bo to jest po stronie albo Twojego kodu, albo jakiegoś modułu do Laravela, albo samego frameworka. Sporo możliwości. A może też coś po stronie serwera. Logi sprawdzałeś?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

zauważyłem pewną zależność, otóż gdy chce wrzucić plik txt, sql wszystko działa dobrze, a gdy plik ma rozszerzenie srt, wtedy zwraca pustą zmienna. Kto wie w czym rzecz?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×