Juan Rincón
Juan Rincón

Reputation: 327

"htmlentities() expects parameter 1 to be string, array given" in PHP

My problem seems to be with Laravel helpers. Everything was working fine until I change some files to other folders, of course I changed the routes and on routes and controllers but now I'm getting this message:

ErrorException in HtmlBuilder.php line 65: htmlentities() expects parameter 1 to be string, array given (View: /Library/WebServer/Documents/gamstec/resources/views/posts/create.blade.php)

This is my create file:

<div class="content">
    <div class="container-fluid">
        <div class="row well bs-component">
            <div class="col-md-8 col-md-offset">
            <div class="input-group">

                <h3 class="text-center">Crear Nueva Publicación</h3>
                <hr>

                {!! Form::open(array('route' => 'posts.store', 'data-parsley-validate' => '')) !!}

                    {{ Form::label('title', ' Título:', array('class' => 'fa fa-pencil')) }}

                    {{ Form::text('title', null, array('class' => 'form-control', 'required' => '', 'maxlength' => '255')) }}

                    {{ Form::label('body', ' Contenido:', array('class' => 'fa fa-pencil-square-o')) }}

                    {{ Form::textarea('body', null, array('class' => 'form-control', 'required' => '')) }}

                    {{ Form::submit('Publicar', array('class' => 'btn btn-info')) }}


                </div>
            </div> <!-- col-md-8 end -->


            <div class="col-md-4">
            <div class="input-group">
                <h3 class="text-center">Categoría e imágen</h3>
                <hr>


                     <br> <hr>

                    {{ Form::label('badge', ' Etiqueta:', array('class' => 'fa fa-tags')) }}

                    {{ Form::text('badge', array('class' => 'form-control', 'maxlength' => '20')) }}
                    <br> <hr>

                     {{ Form::label('postimg', ' Seleccionar Imagen', array('class' => 'fa fa-picture-o')) }}
                    <br> <br>
                    {{ Form::file('postimg', array('require' => '', 'maxlength' => '255')) }}

                {!! Form::close() !!}

            </div> <!-- item-group end -->
            </div> <!-- col-md-4 end -->


        </div> <!-- end of row -->
    </div> <!-- end of container -->
</div> <!-- end of content -->

This is my controller file:

<?php


public function index()
{
    return view('admin');
}

/**
 * Show the form for creating a new resource.
 *
 * @return \Illuminate\Http\Response
 */
public function create()
{
    return view('posts.create');
}

/**
 * Store a newly created resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function store(Request $request)
{
    // validate the data
    $this->validate($request, array(
        'title' => 'required|max:255',
        'body' => 'required',
        ));

    // store in database
    $post = new Post;

    $post->title = $request->title;
    $post->body = $request->body;
    $post->badge = $request->badge;
    $post->postimg = $request->postimg;

    $post->save();

    Session::flash('success', 'La publicación se ha creado correctamente');

    // redirect to another page
    return redirect()->route('show', $post->id);
}

/**
 * Display the specified resource.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function show($id)
{
    $post = Post::find($id);
    return view('show')->withPost($post);
}

/**
 * Show the form for editing the specified resource.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function edit($id)
{
    //
}

/**
 * Update the specified resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function update(Request $request, $id)
{
    //
}

/**
 * Remove the specified resource from storage.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function destroy($id)
{
    //
}

I'll be grateful for your help.

Upvotes: 1

Views: 2803

Answers (2)

Joshua Hutchison
Joshua Hutchison

Reputation: 249

It's this line in your code:

{{ Form::text('badge', array('class' => 'form-control', 'maxlength' => '20')) }}

It needs null as the second value:

{{ Form::text('badge', null, array('class' => 'form-control', 'maxlength' => '20')) }}

Upvotes: 0

Mahmoud Nassar
Mahmoud Nassar

Reputation: 609

That's line generate the error:

{{ Form::text('badge', array('class' => 'form-control', 'maxlength' => '20')) }}

You can pass an additional value option as a second argument can't be an array

To add other attributes, pass a third argument to the method. This third argument must be an array.

Change to this :

{{ Form::text('badge', '', array('class' => 'form-control', 'maxlength' => '20')) }}

Upvotes: 2

Related Questions