Laravel联系模板错误

时间:2017-05-12 21:41:59

标签: laravel laravel-5

是否可以自动显示错误消息?就像它在CodeIgniter中一样? 我有一个联系表单,如果它的验证错误我正在做:

@Override
public void onCreate()
{}

@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
     new MyTask().execute();
     return START_STICKY;
}

private class MyTask extends AsyncTask<Void, Void, String>
{
    String textResult;

    @Override
    protected String doInBackground(Void... params) {

        URL textUrl;

        try {
            textUrl = new URL(textSource);

            BufferedReader bufferReader
                    = new BufferedReader(new InputStreamReader(textUrl.openStream()));

            String StringBuffer;
            String stringText = "";
            while ((StringBuffer = bufferReader.readLine()) != null) {
                stringText += StringBuffer;
            }
            bufferReader.close();

            textResult = stringText;
            return textResult;
        } catch (MalformedURLException e) {
            e.printStackTrace();
            textResult = e.toString();
        } catch (IOException e) {
            e.printStackTrace();
            textResult = e.toString();
        }

        return null;

    }

    @Override
    protected void onPostExecute(String result) {

        Log.d("DebugTag", "Value2: " + textResult);

        super.onPostExecute(result);

        STREAM_URL = result;

    SharedPreferences sharedPreferences = 
    PreferenceManager.getDefaultSharedPreferences(BackgroundService.this);
    String radio = sharedPreferences.getString("station", "8000");

    if (radio != null && radio.equals("8000"))
    {
        STREAM_URL = "http://178.149.88.126:8000/";
    }
    if (radio != null && radio.equals("8010"))
    {
        STREAM_URL = "http://178.149.88.126:8010/";
    }
    if (radio != null && radio.equals("8020"))
    {
        STREAM_URL = "http://178.149.88.126:8020/";
    }
    if (radio != null && radio.equals("8030"))
    {
        STREAM_URL = "http://178.149.88.126:8030/";
    }

    mediaPlayer = new MediaPlayer();
    try
    {
        mediaPlayer.setDataSource(STREAM_URL);
    } catch (IOException e)
    {
        e.printStackTrace();
    }

    mediaPlayer.setOnCompletionListener(BackgroundService.this);
    }
}

我的规则和我的领域:

          return Redirect::to('/support/contact')
         ->with('message', 'Feedback must contain more than 5 characters. Try Again.');

是否可以根据我的字段制作自动消息?

我的控制器:

        $rules = array (
        'first_name' => 'required',
        'email' => 'required|email',
        'message' => 'required|min:5'
    );

1 个答案:

答案 0 :(得分:0)

完全容易做到。

一种方法是更改​​$ validator以使用另一组消息:

示例:

    $validator = Validator::make($request->all(),
        [
            'first_name'            => 'required',
            'email'                 => 'required|email',
            'message'               => 'required|min:5'
        ],
        [
            'first_name.required'     => 'First Name is required',
            'email.required'          => 'Email is Required.',
            'email.email'             => 'Not a valid email',
            'message.max'             => 'Message is Required.',
            'message.min'             => 'Message must me at least 5 characters.',
        ]
    );

另一种方法是将消息作为第三个争论传递

$messages = [

            'first_name.required'     => 'First Name is required',
            'email.required'          => 'Email is Required.',
            'email.email'             => 'Not a valid email',
            'message.max'             => 'Message is Required.',
            'message.min'             => 'Message must me at least 5 characters.',

]

$validator = Validator::make ($data, $rules, $messages);

https://laravel.com/docs/5.4/validation#custom-error-messages

你可能还想检查验证器是否失败而不是成功,用以下代替if / else的东西,然后拥有“快乐路径”&#39;在方法的底部。

    if ($validator->fails()) {

        // Or do custom action here with $request, $validator

        $this->throwValidationException(
            $request, $validator
        );
    }