agregar id en Form::text en laravel

publicado por: Anonymous

en los inputs normalmente deja agregarles un id=”dato1″, pero si estoy ocupando laravel los hago de esta forma pero no me lo reconoce, de que forma se agrega en laravel ya que necesito el id del input para un script

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

solución

Es la forma correcta, puedes verlo en el código fuente del Form Builder de Laravel Collective.

Este es el código que genera los input del formulario.
https://github.com/LaravelCollective/html/blob/5.5/src/FormBuilder.php#L258

/**
 * Create a form input field.
 *
 * @param  string $type
 * @param  string $name
 * @param  string $value
 * @param  array  $options
 *
 * @return IlluminateSupportHtmlString
 */
public function input($type, $name, $value = null, $options = [])
{
    $this->type = $type;

    if (! isset($options['name'])) {
        $options['name'] = $name;
    }

    // We will get the appropriate value for the given field. We will look for the
    // value in the session for the value in the old input data then we'll look
    // in the model instance if one is set. Otherwise we will just use empty.
    $id = $this->getIdAttribute($name, $options);

    if (! in_array($type, $this->skipValueTypes)) {
        $value = $this->getValueAttribute($name, $value);
    }

    // Once we have the type, value, and ID we can merge them into the rest of the
    // attributes array so we can convert them into their HTML attribute format
    // when creating the HTML element. Then, we will return the entire input.

    $merge = compact('type', 'value', 'id');

    $options = array_merge($options, $merge);

    return $this->toHtmlString('<input' . $this->html->attributes($options) . '>');
}

Este es el código que obtiene el atributo id de las opciones (tercer parámetro que pasas) o del nombre (primer parámetro):

/**
 * Get the ID attribute for a field name.
 *
 * @param  string $name
 * @param  array  $attributes
 *
 * @return string
 */
public function getIdAttribute($name, $attributes)
{
    if (array_key_exists('id', $attributes)) {
        return $attributes['id'];
    }

    if (in_array($name, $this->labels)) {
        return $name;
    }
}
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *