Laravel 5

Organisation des vues via Provider: Method control does not exist

  • Avatar de TechNov
    Membre depuis :
    31/01/2015
    Messages :
    12

    Bonjour à tous, Voulant faire une gestion epurée de mes vue telle qu'expliqué ici par @betmomo.
    j'ai cette erreur:

    Method control does not exist. (View:xx\xxx\www\xxx\resources\views\posts\add.blade.php)

    vois ci le Provider.

    <?php

    namespace App\Providers;

    use Illuminate\Support\ServiceProvider;
    use Collective\Html\FormBuilder;
    use Collective\Html\HtmlBuilder;

    class HtmlMacrosServiceProvider extends ServiceProvider
    {
    /
    Bootstrap the application services.

    @return void
    /
    public function boot()
    {
    // $this->registers();
    }

    /

    Register the application services.

    @return void
    /
    public function register()
    {
    $this->registerFormControl();
    $this->registerFormSubmit();
    $this->registerHtmlButtonBack();
    }

    private function registerFormControl()
    {
    FormBuilder::macro('control', function ($type, $errors, $nom, $placeholder) {
    $valeur = \Request::old($nom) ? \Request::old($nom) : null;
    $attributes = ['class' => 'form-control', 'placeholder' => $placeholder];
    return sprintf(
    '
    <div class="form-group %s">
    %s
    %s
    </div>',
    $errors->has($nom) ? 'has-error' : '',
    call_user_func_array(['Form', $type], [$nom, $valeur, $attributes]),
    $errors->first($nom, '<small class="help-block">:message</small>')
    );
    });
    }

    private function registerFormSubmit()
    {
    FormBuilder::macro('button_submit', function ($texte) {
    return FormBuilder::submit($texte, ['class' => 'btn btn-info pull-right']);
    });
    }

    private function registerHtmlButtonBack()
    {
    HtmlBuilder::macro('button_back', function () {
    return '<a href="javascript:history.back()" class="btn btn-primary">
    <span class="glyphicon glyphicon-circle-arrow-left"></span> Retour
    </a>';
    });
    }
    }

    et voici comment enregistré ce provider dans config/app.php

    Illuminate\View\ViewServiceProvider::class,
    Barryvdh\Debugbar\ServiceProvider::class,
    App\Providers\HtmlMacrosServiceProvider::class,

    enfin ma vue:

    @extends('posts.template')

    @section('contenu')

    <div class="col-sm-offset-4 col-sm-4">
    <div class="panel panel-info">
    <div class="panel-heading">
    <h1> Create post</h1>
    </div>
    <div class="panel-body">
    {!! Form::open(['route' => 'post.store']) !!}
    {!! Form::control('text', $errors, 'titre', 'Titre') !!}
    {!! Form::control('textarea', $errors, 'contenu', 'Contenu') !!}
    {!! Form::control('text', $errors, 'tags', 'Entrez les tags séparés par des virgules') !!}
    {!! Form::button_submit('Envoyer !') !!}

    {!! Form::close() !!}
    <div class="panel-foot">
    {!!Html::button_back()!!}
    </div>
    </div>
    </div>

    @endsection

    JE ne sais pas si quelque choses m'echappe mais j'ai cette erreur qui me dit que la methode (macro) 'control' n'existe pas.

Vous ne pouvez pas répondre à ce sujet.