laravel htmlentities() 期望参数 1 是字符串,给定的对象
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/29755000/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
htmlentities() expects parameter 1 to be string, object given
提问by justin.esders
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.
我目前正在使用 Laravel 5,但任何建议将不胜感激。我目前正在使用 laravel 的表单构建器,并且不断收到此 html 实体错误。我什至尝试将 textarea 更改为文本字段,但无济于事。以下是我的完整堆栈跟踪。
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' => '[email protected]', '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' => '[email protected]', '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' => '[email protected]', 'phone' => 'jkjkjk', 'message' => object(Message))) in Mailer.php line 288
at Mailer->addContent(object(Message), 'emails.contact', null, null, array('name' => 'jkj', 'email' => '[email protected]', 'phone' => 'jkjkjk', 'message' => object(Message))) in Mailer.php line 162
at Mailer->send('emails.contact', array('name' => 'jkj', 'email' => '[email protected]', 'phone' => 'jkjkjk', 'message' => 'jkjkj'), object(Closure)) in Facade.php line 216
at Facade::__callStatic('send', array('emails.contact', array('name' => 'jkj', 'email' => '[email protected]', 'phone' => 'jkjkjk', 'message' => 'jkjkj'), object(Closure))) in PagesController.php line 37
at Mail::send('emails.contact', array('name' => 'jkj', 'email' => '[email protected]', '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
联系人.blade.php
<p>
Name: {{ $name }}
</p>
<p>
{{ $email }}
</p>
<p>
{{ $phone }}
</p>
<p>
{{ $message }}
</p>
ContactFormRequest.php
联系表格请求.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
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('[email protected]', '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('[email protected]');
$message->to('[email protected]', 'Admin')->subject('Chyall Pharma Contact');
});
return \Redirect::route('/')->with('message', 'Thanks for contacting us!');
}
}
回答by mininoz
The problem is in PagesController
inside the Mail::send
.
问题是在PagesController
内部Mail::send
。
'message' => $request->get('message');
You are using the variable name 'message'
and it should be avoided.
您正在使用变量名称'message'
,应避免使用。
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.
注意:$message 变量始终传递给电子邮件视图,并允许内联嵌入附件。因此,最好避免在视图负载中传递消息变量。
source: http://laravel.com/docs/5.0/mail#basic-usagein the first note.
来源:http: //laravel.com/docs/5.0/mail#basic-usage在第一个注释中。
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
而且不要忘记改变你的变量名contact.blade.php
,以及
<p>
Name: {{ $name }}
</p>
<p>
{{ $email }}
</p>
<p>
{{ $phone }}
</p>
<p>
{{ $bodyMessage }} // This line.
</p>
回答by Nicoleta Malancea
{!! 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')) !!}
回答by Rubén Ruíz
if you want print a array must be done like:
如果你想打印一个数组,必须像这样:
<?php dd($nameOfvarArray); ?>
回答by Connor Leech
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.
当我有错误的表单方法时,我也遇到了这个错误。要创建文本输入,请确保使用text
方法,而不是input
方法。
{!! 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")
这是纠正了错误。这是用于 Laravel 5.3 和Laravel Collective(即作曲家需要“laravelcollective/html”:“^5.3.0”)
回答by Nicoleta Malancea
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',
到 composer.json:
"require": { "illuminate/html": "5.0.*@dev" },
到 app.php 提供者数组
'照亮\Html\HtmlServiceProvider',
到 app.php 别名数组
'Html' => '照亮\Html\HtmlFacade',
'Form' => 'Illuminate\Html\FormFacade',
and then
进而
composer update