Как да display-на съобщения от json ?

lfc321

Registered
Имам форма за събиране на имейли, която съм я свързал към таблица в БД-то и съм я валидирал със съобщения за грешка и за успешно въведен имейл (работя с Ларавел).

Въпросът ми е как тези съобщения за грешка и съответно за успешно изпълнена заявка, да ги изкарам във формата ?

Ето тук валидирам и свързвам с БД-то:

Код:
<?php

class MailController extends Controller
{ 


    public function storeMail()



        $val = Validator::make(Input::all(), [
            'mailinglist' => 'required|email|unique'
        ]);


        if ($val->fails()) {
            return Response::json(['success' => false, 'data' => ['reason' => 'Invalid email','msg'=>'Invalid Email Address!']]);
        } else {

            $mail = UserEmails::create(array(
                'user_email' => Input::get('mailinglist')

            ));

            if (is_int($mail->id)) {
                return Response::json(['success'=> true, 'data' => ['msg'=>'You sent your email successfully!']]);
            }

        }


    }


А ето я и формата :
Код:
  <div class="container-fluid" id="footer">
            <div class="container">

                <div class="col-md-6">

                </div>

                <div class="col-md-6">
                    <div class="col-md-10 col-md-offset-2" style="margin-top: 30px;">
                        <form action="{{ URL::to('storemail') }}" method="POST" id="storeMailForm" >
                            <div class="row">
                                <div class="col-md-12">
                                    <label style="text-shadow: 4px 4px 30px #888888;color: white; background-color: transparent;" for="mailinglist">Enter your Email to join our mailing list</label>
                                </div>
                                <div class="col-md-11">
                                    <input type="text" id="mailinglist" class="form-control" name="mailinglist"/>
                                </div>
                                <div class="col-md-1">
                                    <button class="btn" style="background-color: white;">></button>
                                </div>
                            </div>

                        </form>

                        <br />
                        <p style="font-weight: bolder;">Real Estate (c) 2014 | Privacy policy</p>
                    </div>
                </div>
            </div>
        </div>
 
А защо ги връщаш като json? Ако формата се събмитва с javascript (jQuery.ajax()) може да вземеш response-a и да го форматираш:

Код:
result = {"success": false, "data": {"reason": "Invalid email", "msg": "Invalid Email Address!"}} //евентуално ти връща това;
//ако ползваш jQuery
data = $.parseJSON(result);

if (data.success) {
    $(success_elem).html(data.msg);
} else {
    $(error_elem).html(data.msg);
}

Кода е примерен и не е тестван.

Ако искаш да го покажеш във View-то (и това не е асинхронна заявка):
По-добре върни валидатора със съобщенията on fail:

Код:
return $val->messages();

И покажи всичките съобщения.
 

Back
Горе