0

私はチュートリアルに従ってlaravelを学んでいます。このエラーで立ち往生しています

ErrorException in Macroable.php line 81: Method open does not exist. (View: path\to\project\resources\views\form.blade.php)

FormFacadeを使用しています。以前、私は次のようなエラーに直面していました: Call to undefined method Illuminate\Foundation\Application::bindShared()

ファイル全体を置き換えることbindSharedで克服しましたsingleton

/path/project/vendor/illuminate/html/HtmlServiceProvider.php

form.blade.php

<html>


    <head>
        <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
    </head>

    <body>
        <h1>Create a new form</h1>
        <hr/>

        {{ Form::open() }}



        {{ Form::close() }}
    </body>


</html>

HtmlServiceProvider.php

use Illuminate\Support\ServiceProvider;

class HtmlServiceProvider extends ServiceProvider {

    /**
     * Indicates if loading of the provider is deferred.
     *
     * @var bool
     */
    protected $defer = true;

    /**
     * Register the service provider.
     *
     * @return void
     */
    public function register()
    {
        $this->registerHtmlBuilder();

        $this->registerFormBuilder();

        $this->app->alias('html', 'Illuminate\Html\HtmlBuilder');
        $this->app->alias('form', 'Illuminate\Html\FormBuilder');
    }

    /**
     * Register the HTML builder instance.
     *
     * @return void
     */
    protected function registerHtmlBuilder()
    {
        $this->app->singleton('html', function($app)
        {
            return new HtmlBuilder($app['url']);
        });
    }

    /**
     * Register the form builder instance.
     *
     * @return void
     */
    protected function registerFormBuilder()
    {
        $this->app->singleton('form', function($app)
        {
            $form = new FormBuilder($app['html'], $app['url'], $app['session.store']->getToken());

            return $form->setSessionStore($app['session.store']);
        });
    }

    /**
     * Get the services provided by the provider.
     *
     * @return array
     */
    public function provides()
    {
        return array('html', 'form');
    }

}

助けてください。

4

2 に答える 2

1

config/app.phpプロバイダーを追加します。

Collective\Html\HtmlServiceProvider::class,

エイリアスを追加します。

'Html' => Collective\Html\HtmlFacade::class,

フォームの open と close を置き換えます。

    {!! Form::open() !!}



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

注:
これはlaravel 5用です。

于 2016-02-04T15:10:12.077 に答える
1

illuminate/htmlは Laravel 5.0 で非推奨となり、Laravel 5.1+ で動作するように更新されていません。

laravelcollective/htmlパッケージに置き換える必要があります。

于 2016-02-04T17:57:13.940 に答える