htmlentities() expects parameter 1 to be string, o

2019-03-14 07:41发布

I am currently using Laravel 5 but any suggestions would be appreciated. I am currently using laravel's form builder and I keep getting this html entity error. I have tried even changing the textarea to a text field and much more to no avail. Below is my full stack trace.

STACK TRACE

ErrorException in helpers.php line 455:
htmlentities() expects parameter 1 to be string, object given (View: /home/fujita/resources/views/emails/contact.blade.php)
in helpers.php line 455
at CompilerEngine->handleViewException(object(ErrorException), '1') in PhpEngine.php line 43
at PhpEngine->evaluatePath('/home/fujita/storage/framework/views/e0d450cfe03e94c1d8bac332b837ce79', array('__env' => object(Factory), 'app' => object(Application), 'errors' => object(ViewErrorBag), 'name' => 'jkj', 'email' => 'jkjkjk@m.com', 'phone' => 'jkjkjk', 'message' => object(Message))) in CompilerEngine.php line 57
at CompilerEngine->get('/home/fujita/resources/views/emails/contact.blade.php', array('__env' => object(Factory), 'app' => object(Application), 'errors' => object(ViewErrorBag), 'name' => 'jkj', 'email' => 'jkjkjk@m.com', 'phone' => 'jkjkjk', 'message' => object(Message))) in View.php line 136
at View->getContents() in View.php line 104
at View->renderContents() in View.php line 78
at View->render() in Mailer.php line 425
at Mailer->getView('emails.contact', array('name' => 'jkj', 'email' => 'jkjkjk@m.com', 'phone' => 'jkjkjk', 'message' => object(Message))) in Mailer.php line 288
at Mailer->addContent(object(Message), 'emails.contact', null, null, array('name' => 'jkj', 'email' => 'jkjkjk@m.com', 'phone' => 'jkjkjk', 'message' => object(Message))) in Mailer.php line 162
at Mailer->send('emails.contact', array('name' => 'jkj', 'email' => 'jkjkjk@m.com', 'phone' => 'jkjkjk', 'message' => 'jkjkj'), object(Closure)) in Facade.php line 216
at Facade::__callStatic('send', array('emails.contact', array('name' => 'jkj', 'email' => 'jkjkjk@m.com', 'phone' => 'jkjkjk', 'message' => 'jkjkj'), object(Closure))) in PagesController.php line 37
at Mail::send('emails.contact', array('name' => 'jkj', 'email' => 'jkjkjk@m.com', 'phone' => 'jkjkjk', 'message' => 'jkjkj'), object(Closure)) in PagesController.php line 37
at PagesController->store(object(ContactFormRequest))
at call_user_func_array(array(object(PagesController), 'store'), array(object(ContactFormRequest))) in Controller.php line 246
at Controller->callAction('store', array(object(ContactFormRequest))) in ControllerDispatcher.php line 162
at ControllerDispatcher->call(object(PagesController), object(Route), 'store') in ControllerDispatcher.php line 107
at ControllerDispatcher->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 141
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 101
at Pipeline->then(object(Closure)) in ControllerDispatcher.php line 108
at ControllerDispatcher->callWithinStack(object(PagesController), object(Route), object(Request), 'store') in ControllerDispatcher.php line 67
at ControllerDispatcher->dispatch(object(Route), object(Request), 'App\Http\Controllers\PagesController', 'store') in Route.php line 198
at Route->runWithCustomDispatcher(object(Request)) in Route.php line 131
at Route->run(object(Request)) in Router.php line 691
at Router->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 141
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 101
at Pipeline->then(object(Closure)) in Router.php line 693
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 660
at Router->dispatchToRoute(object(Request)) in Router.php line 618
at Router->dispatch(object(Request)) in Kernel.php line 210
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 141
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in VerifyCsrfToken.php line 43
at VerifyCsrfToken->handle(object(Request), object(Closure)) in VerifyCsrfToken.php line 17
at VerifyCsrfToken->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in ShareErrorsFromSession.php line 55
at ShareErrorsFromSession->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in StartSession.php line 61
at StartSession->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 36
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in EncryptCookies.php line 40
at EncryptCookies->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in CheckForMaintenanceMode.php line 42
at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 101
at Pipeline->then(object(Closure)) in Kernel.php line 111
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 84
at Kernel->handle(object(Request)) in index.php line 53

contact.blade.php

<p>
Name: {{ $name }}
</p>

<p>
{{ $email }}
</p>

<p>
{{ $phone }}
</p>

<p>
{{ $message }}
</p>

ContactFormRequest.php

<?php namespace App\Http\Requests;

use App\Http\Requests\Request;

class ContactFormRequest extends Request {


    public function authorize()
    {
        return true;
    }


    public function rules()
    {
        return [
            'name' => 'required',
            'email' => 'required|email',
            'phone' => 'required',
            'message' => 'required',
        ];
    }

}

Form on index.blade.php

        {!! Form::open(array('route' => 'contact_store', 'class' => 'form')) !!}

        <div class="form-group">

            {!! Form::text('name', null, 
                array('required', 
                      'class'=>'form-control', 
                      'placeholder'=>'Name*')) !!}
        </div>

        <div class="form-group">

            {!! Form::text('email', null, 
                array('required', 
                      'class'=>'form-control', 
                      'placeholder'=>'Email Address*')) !!}
        </div>
        <div class="form-group">

            {!! Form::text('phone', null, 
                array('required', 
                      'class'=>'form-control', 
                      'placeholder'=>'Phone')) !!}
        </div>

        <div class="form-group">

            {!! Form::textarea('message', null, 
                array('required', 
                      'class'=>'form-control', 
                      'placeholder'=>'Message')) !!}
        </div>

        <div class="form-group">
            {!! Form::submit('Submit', 
              array('class'=>'btn btn-primary')) !!}
        </div>
        {!! Form::close() !!}
        <ul>
            @foreach($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>

PagesController

<?php namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Http\Requests\ContactFormRequest;





class PagesController extends Controller {

    public function home()
    {

        // Mail::send('emails.contact', array('name' => 'Justin' ), function($message){
        //  $message->to('justin@sfp.net', 'Justin')->subject('Test');
        // });
        return view('pages.index');
    }

    public function store(ContactFormRequest $request)
{

    \Mail::send('emails.contact',
        array(
            'name' => $request->get('name'),
            'email' => $request->get('email'),
            'phone' => $request->get('phone'),
            'message' => $request->get('message')


        ), function($message)
    {
        $message->from('justin@sfp.net');
        $message->to('justin@sfp.net', 'Admin')->subject('Chyall Pharma Contact');
    });

  return \Redirect::route('/')->with('message', 'Thanks for contacting us!');

}
}

5条回答
可以哭但决不认输i
2楼-- · 2019-03-14 08:21

if you want print a array must be done like:

<?php dd($nameOfvarArray); ?>

reference: https://laravel.com/docs/5.2/helpers#method-dd

查看更多
啃猪蹄的小仙女
3楼-- · 2019-03-14 08:30

The problem is in PagesController inside the Mail::send.

'message' => $request->get('message');

You are using the variable name 'message' and it should be avoided.

Note: 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.

source: http://laravel.com/docs/5.0/mail#basic-usage in the first note.

You might need to change the variable name to be something else.

'bodyMessage' => $request->get('message');

And don't forget the change the variable name in your contact.blade.php as well

<p>
Name: {{ $name }}
</p>

<p>
{{ $email }}
</p>

<p>
{{ $phone }}
</p>

<p>
{{ $bodyMessage }} // This line.
</p>
查看更多
等我变得足够好
4楼-- · 2019-03-14 08:34

I also encountered this error when I had the wrong form method. To create a text input make sure to use text method, not input method.

{!! Form::text('name', null, ['class' => 'form-control']) !!}

instead of:

{!! Form::input('name', null, ['class' => 'form-control']) !!}

This is corrected the error. This is for Laravel 5.3 with Laravel Collective (i.e. composer require "laravelcollective/html":"^5.3.0")

查看更多
太酷不给撩
5楼-- · 2019-03-14 08:38

Did you add

  • to composer.json:

    "require": { "illuminate/html": "5.0.*@dev" },

  • to app.php providers array

    'Illuminate\Html\HtmlServiceProvider',

  • to app.php aliases array

    'Html' => 'Illuminate\Html\HtmlFacade',

    'Form' => 'Illuminate\Html\FormFacade',

and then

composer update
查看更多
地球回转人心会变
6楼-- · 2019-03-14 08:47
{!! Form::submit('Submit', array('class'=>'btn btn-primary')) !!}

This line needs a non-array second parameter, try changing it to:

{!! Form::submit('Submit', '', array('class'=>'btn btn-primary')) !!}
查看更多
登录 后发表回答