Laravel htmlspecialchars () ожидает, что параметр 1 будет строкой, объектом, заданным в моем проекте?

Итак, я пытаюсь закодировать простую форму веб-сайта. Но у него есть эта ошибка htmlspecialchars.

Я пытался сделать {{ $message }}, но это не сработало. имеет ту же ошибку.

это мой контроллер:

<?php
namespace App\Http\Controllers;
use Mail;
use Illuminate\Http\Request;
class ContactMessageController extends Controller
{
public function create()
    {
        return view('form');
    }

public function store(Request $request)
{
    $this->validate($request, [
        'name' => 'required',
        'email' => 'required|email',
        'address' => 'required',
    ]);

    Mail::send('emails.contact-message', [
        'message' => $request->message
    ], function($mail) use($request) {
        $mail->from($request->email, $request->name);

        $mail->to('[email protected]')->subject('Contact message');
    });

        return redirect()->back()->with('flash_message', 'thanks');
    }
}

а это мой клинок

<!DOCTYPE html>
<html>
<head>
<meta charset = "utf-8" />
<meta http-equiv = "X-UA-Compatible" content = "IE=edge">
<title>Customer Details</title>
<meta name = "viewport" content = "width=device-width, initial-scale=1">
<link rel = "stylesheet" type = "text/css" media = "screen" href = "main.css" />
<link rel = "stylesheet" href = "https://stackpath.bootstrapcdn.com/bootstrap/4.3.0/css/bootstrap.min.css" integrity = "sha384-PDle/QlgIONtM1aqA2Qemk5gPOE7wFq8+Em+G/hmo5Iq0CCmYZLv3fVRDJ4MMwEA" crossorigin = "anonymous">
<style>
    .invalid-feedback {
        display: block;
    }
</style>
</head>
<body>
<div class  = "container">
    <h1>Customer Form</h1>
        @if (Session::has('flash_message'))
            <div class = "alert alert-success">{{ Session::get('flash_message') }}</div>
        @endif
    <form method = "post" action = "{{ route('contact.store') }}">
    {{ csrf_field() }}
        <div class = "form-group">
            <label>Full Name : </label>
            <input type = "text" class = "form-control" name = "name">
            @if ($errors->has('name'))
                <small class = "form-text invalid-feedback">{{ $errors->first('name') }}</small>
            @endif
        </div>

        <div class = "form-group">
            <label>Email : </label>
            <input type = "text" class = "form-control" name = "email">
            @if ($errors->has('email'))
                <small class = "form-text invalid-feedback">{{ $errors->first('email') }}</small>
            @endif
        </div>

        <div class = "form-group">
            <label>Address : </label>
            <textarea name = "address" class  = "form-control"></textarea>
            @if ($errors->has('address'))
                <small class = "form-text invalid-feedback">{{ $errors->first('address') }}</small>
            @endif
        </div>

        <div class = "form-group">
            <label>Message : </label>
            <textarea name = "message" class  = "form-control"></textarea>
            @if ($errors->has('message'))
                <small class = "form-text invalid-feedback">{{ $errors->first('message') }}</small>
            @endif
        </div>

        <button class = "btn btn-primary">Submit</button>


    </form>
</div>

</body>
</html>

а это мой контакт-message.blade.php

{{ $message }}

также я пробовал {{дд($сообщение)}}

но это не сработало.

пожалуйста помоги.

видели это? stackoverflow.com/questions/40045920/…

Brainmaniac 12.02.2019 09:07

да, но и это не помогает.

calvinerico 12.02.2019 09:12

Вы пытались проверить, что содержит $message? Ошибка возникает даже из этой конкретной переменной?

Nico Haase 12.02.2019 09:17

@NicoHaase, не могли бы вы объяснить, как мне проверить, что содержит сообщение $? я новичок в ларавеле..

calvinerico 12.02.2019 09:28

Ну, вы могли бы использовать var_dump, echo, возможно dump от Symfony работает, более изощренные подходы начинались бы с XDebug — я не хочу быть грубым и не хочу звучать высокомерно, но это базовое мастерство, которое вам нужно научитесь более эффективно программировать. Вы увидите, что это быстро окупится :)

Nico Haase 12.02.2019 09:32

@NicoHaase спасибо, но я все еще не могу понять....

calvinerico 12.02.2019 09:38

Можете ли вы поделиться своим представлением сообщения электронной почты.

Md Riadul Islam 12.02.2019 09:54

@rdhawladar содержит только {{ $message }}

calvinerico 12.02.2019 10:23

@calvinerico Я добавил ответ, надеюсь, он сработает.

Md Riadul Islam 12.02.2019 11:38
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
7
9
22 543
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы должны попробовать это:

public function store(Request $request)
{
    $this->validate($request, [
        'name' => 'required',
        'email' => 'required|email',
        'address' => 'required',
    ]);

    $fromName = $request->name;
      $subject = "MailSent";
      $data = array(
        'message' => $request->message
        );

      $fromEmail = $request->email;

      $toName = 'test';
      $toEmail = '[email protected]';


      Mail::send('emails.contact-message', $data, function($message) use ($toEmail, $toName, $fromEmail, $fromName, $subject){ 

        $message->from($fromEmail, $fromName);
        $message->to($toEmail, $toName);
        $message->subject($subject);
      });

        return redirect()->back()->with('flash_message', 'thanks');
    }
}

Пожалуйста, объясните, что именно вы изменили и почему это имеет значение

Nico Haase 12.02.2019 09:17

@NicoHaase: я изменил функцию отправки почты

AddWeb Solution Pvt Ltd 12.02.2019 09:18

я пробовал, но тоже не работает. все та же ошибка.

calvinerico 12.02.2019 09:19

Какой точно вы изменили и почему вы думаете, что это решает проблему? Как давний пользователь SO, вы должны знать, что эти объяснения имеют решающее значение, поскольку ОП должен уметь учиться на вашем ответе.

Nico Haase 12.02.2019 09:20
Ответ принят как подходящий

Просто измените ключ массива с message на messages в вашем контроллере, как показано ниже:

$data = array(
        'messages' => $request->message
        );

а также в лезвии напечатайте его как {{$messages}}

A $message variable is always passed to e-mail views, and allows the inline embedding of attachments. So, it is best to avoid passing a message variable in your view payload.

Проверьте примечание по этой ссылке: http://laravel.com/docs/5.0/mail#basic-использование

Добро пожаловать @calvinerico. Поскольку вы новичок, просто чтобы вы знали, что если какой-либо ответ вам подходит, вы можете принять его, и принятие идеального ответа повысит ценность вашего профиля. См. подробности здесь: stackoverflow.com/help/someone-answers

Md Riadul Islam 13.02.2019 04:31

Спасибо! Это относится к Laravel 5.8, и эта запись о $message была удалена из документации. Не уверен, почему...

delroh 28.10.2019 22:25

Они должны каким-то образом сказать такие вещи на странице отладки. Я искал везде и перепробовал множество способов отправки данных. О Боже.

Akshay kn 04.09.2020 09:07

Спасибо за это, я бился головой об экран, пока не нашел этот пост и не понял, что происходит какое-то зарезервированное слово BS. Вздох. Спасибо!

Snouto 10.10.2021 04:53

Другие вопросы по теме