Laravel4 Błąd przy wypłeniainu pól formularza

Laravel4 Błąd przy wypłeniainu pól formularza
pol90
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 3 lata
  • Postów:1181
0

Mam taki problem mam przykład w laravelu, który polega na tym, że jest sobie strona rejestracji i jest routing, który sprawdza czy dane pola zostały poprawnie wypełnione w przypadku kiedy zostały źle wypełnione to wszystko działa dobrze bo pojawia się komunikat, o tym, że by je poprawić natomiast w przypadku kiedy ma nastąpić przekierowanie do właściwej strony wywala błąd w logach apacha nie ma żadnego błędu.

Kopiuj
Route::post('registration', array('before' => 'csrf',
function()
{
$rules = array(
'email' => 'required|email|unique:users',
'password' => 'required|same:password_confirm',
'name' => 'required'
);
$validation = Validator::make(Input::all(), $rules);
if ($validation->fails())
{
//return Redirect::to('registration')->withErrors($validation)->withInput();
return "dobrze";

}
$user = new User;
$user->email = Input::get('email');
$user->password = Hash::make(Input::get('password'));
$user->name = Input::get('name');
$user->admin = Input::get('admin') ? 1 : 0;
if ($user->save())
{
Auth::loginUsingId($user->id);
return Redirect::to('profile');
}
//return View::make('registration');
//return "źle";
})); 


Route::get('registration', function()
{
return View::make('registration');
});

Route::get('profile', function()
{
//if (Auth::check())
//{
//return 'Witamy! Zostałeś uwierzytelniony!';
//}
//else
//{
return 'Proszę się <a href="login">zalogować</a>';
//}
});

Plik registration.php

Kopiuj
 <!DOCTYPE html>
<html>
<head>
<title>Uwierzytelnianie w Laravelu - rejestracja
</title>
<meta charset="utf-8">
</head>
<body>
<h2>Uwierzytelnianie w Laravelu - rejestracja</h2>
<?php $messages = $errors->all('<p style=
"color:red">:message</p>') ?>
<?php foreach ($messages as $msg): ?>
<?= $msg ?>
<?php endforeach; ?>
<?= Form::open() ?>
<?= Form::label('email', 'Adres email: ') ?>
<?= Form::text('email', Input::old('email')) ?>
<br>
<?= Form::label('password', 'Hasło: ') ?>
<?= Form::password('password') ?>
<br>
<?= Form::label('password_confirm',
'Potwierdź hasło: ') ?>
<?= Form::password('password_confirm') ?>
<br>
<?= Form::label('name', 'Nazwa: ') ?>
<?= Form::text('name', Input::old('name')) ?>
<br>
<?= Form::label('admin', 'Administrator?: ') ?>
<?= Form::checkbox('admin','true',
Input::old('admin')) ?>
<br>
<?= Form::submit('Zarejestruj!') ?>
<?= Form::close() ?>
</body>
</html>
mr_jaro
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Grudziądz/Bydgoszcz
  • Postów:5300
0

Po pierwsze i najważniejsze naucz się dzielić kod. Routing nie służy do umieszczania tam całego kodu! Właśnie tak uczą mizerne poradniki a potem jest hejt na laravela jaki to on zły. Połowa kodu który tu napisałeś w routing powinna trafić do kontrolera druga połowa do modelu. W routingu powinno zostać jednie coś takiego.

Kopiuj
Route::group( array( 'prefix' => 'registration'), function () {
    Route::get( '/', array( 'as' => 'registration.create', 'uses' => 'ProfileController@create' ) );
    Route::post( '/', array( 'as' => 'registration.store',  'before' => 'csrf', 'uses' => 'ProfileController@store' ) );
} );

Route::get( '/profile', array( 'as' => 'profile', 'uses' => 'ProfileController@show' ) );

i jak tak bedziesz miał to możesz użyć, a przynamniej zakładam, że to ta linjka ci nie chodziła.

Kopiuj
return Redirect::route('profile');

It's All About the Game.
Zobacz pozostałe 4 komentarze
pol90
@Laran Główną wadą tych kursów do laravela 5 jest to, że są po angielsku.
CeKa
Czemu zaleta ma być wadą? :D Jakby były po chińsku, wtedy mógłbyś się martwić ;)
pol90
@CeKa Bo nie wszyscy znają dobrze angielski.
CeKa
To czas się nauczyć, wystarczy poziom wystarczający do czytania dokumentacji. Zresztą.. nie trzeba czytać całego, wystarczy przykłady zrozumieć.
pol90
Ja angielski znam trochę tylko czytany np. jeżeli ktoś coś do mnie powie po angielsku to go nie zrozumiem, ale jak by ktoś to samo zdanie napisał to już będzie lepiej.
pol90
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 3 lata
  • Postów:1181
0

Ten efekt co dałeś nie zadziałał.
Teraz jak się z tym bawię to zauważyłem, że dam taki kod

Kopiuj
 Route::post('registration', 
function()
{
$rules = array(
'email' => 'required|email|unique:users',
'password' => 'required|same:password_confirm',
'name' => 'required'
);
$validation = Validator::make(Input::all(), $rules);
if ($validation->fails())
{
//return Redirect::to('registration')->withErrors($validation)->withInput();
return "dobrze";

}

});

I w momencie kiedy formularz jest źle wypełniony to drukuje napis dobrze, ale w momencie kiedy jest dobrze to nie ma nawet pustej strony.

drorat1
  • Rejestracja:ponad 15 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Krasnystaw
  • Postów:1181
0

W Laravelu 5 to taki formularz rejestracji się generuje artisanem. Ale co do L4 (nie wiem dlaczego ma być odradzany???), po kolei;

app/routes.php

Kopiuj
Route::get('register', 'UserController@getRegister');
Route::post('register', 'UserController@postRegister'); 

app/models/User.php

Kopiuj
<?php

use Illuminate\Auth\UserTrait;
use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableTrait;
use Illuminate\Auth\Reminders\RemindableInterface;

class User extends Eloquent implements UserInterface, RemindableInterface {

	use UserTrait, RemindableTrait;

	protected $table = 'users';
	protected $hidden = array('password', 'remember_token');

        public static $rules = array(
            'username'=>'required|alpha|min:2',
            'password'=>'required|alpha_num|between:6,12|confirmed',
            'password_confirmation'=>'required|alpha_num|between:6,12'
        );
}

app/controllers/UserController.php

Kopiuj
<?php

class UserController extends BaseController
{

    public function getRegister()
    {
        return View::make('user.registerForm');
    }

    public function postRegister()
    {
        $validator = Validator::make(Input::all(), User::$rules);

        if ($validator->passes())
        {
            $user = new User;
            $user->username = Input::get('username');
            $user->password = Hash::make(Input::get('password'));
            $user->save();

            return Redirect::to('login')->with('message', 'Dziękujemy za rejestrację');
        } else
        {
            // wyświetlanie błędów
        }
    }
}

app/views/user/registerForm.php

Kopiuj
<!DOCTYPE HTML>
<html>
    <head>
        <title>Rejestracja</title>
        <meta charset="UTF-8" />
    </head>
    <body>
       <form method="POST" action="/register" accept-charset="UTF-8" class="box register"> 
        <fieldset class="boxBody">
            <label>Username</label>
            <input type="text" tabindex="1" name="username" required>
            <label>Password</label>
            <input type="password" name="password" tabindex="2" required>
            <label>Confirm password</label>
            <input type="password" name="password_confirmation" tabindex="2" required>
        </fieldset>
        <footer>
            <input type="submit" class="btnLogin" value="Register" tabindex="4">
        </footer>
    </form>
</body>
</html>
mr_jaro
Odradzany L4 bo firmy nie robią w tym już nic nowego, jedynie zostały serwisy których ktoś postanowił nie migrować, a że zmiany są duże między L4 a L5 więc autor wątku uczy się czegoś co mu się nie przyda.
drorat1
  • Rejestracja:ponad 15 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Krasnystaw
  • Postów:1181
1

Akurat (no w sumie nie całkowicie) polska dokumentacja dotyczy L4.2:
http://laravel-docs.pl/

Przetłumaczone ale tylko częściowo. Tu chyba nie ma większych przeszkód żeby podstawy ćwiczyć nawet na 4.2 a potem przejść na 5.3.

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)