美文网首页
laravel day5 section 1: create i

laravel day5 section 1: create i

作者: 妙啊啦 | 来源:发表于2019-03-02 14:51 被阅读0次

    今天我们要来说一下create这个function

    之前我们用的是todo,url为 localhost:8000/todos/show,
    同理,我们今天的就是localhost:8000/todos/create,

    step 1:
    既然涉及到了form,那我们就可以之间用laravel collective
    首先安装laravelcollective

    composer require "laravelcollective/html":"^5.4.0" -vvv       
    

    step 2
    在config/app.php文件中中导入
    ···
    Collective\Html\HtmlServiceProvider::class,
    ···
    并在allia中添加

    'Form' => Collective\Html\FormFacade::class, 
    'Html' => Collective\Html\FormFacade::class, 
    

    ===================================================================
    下面我们需要来创建一个form,但是,我们并不想在html里面创建,我们更想用compoennt的方式,
    比如,每一个input都是一个component,足后把她们组合起来
    首先我们需要一个服务的提供者
    现在我们需要创建一个provider(用于提供form service 这个服务,用于控制不同的form inut组件,是一种component的概念)

    php artisan make:provider FormServiceProvider 
    

    step 2
    在provider中,我们需要创建我们需要的表单中的输入,我们需要,一个input,一个textarea,当然,我们还需要一个submit

    在provider中,我们首先需要use一个东西,叫做form,然后在boot里面,我们创建form里面我们需要的元素

    <?php
    
    namespace App\Providers;
    
    use Illuminate\Support\ServiceProvider;
    use Form;
    
    class FormServiceProvider extends ServiceProvider
    {
        /**
         * Register services.
         *
         * @return void
         */
        public function register()
        {
            //
        }
    
        /**
         * Bootstrap services.
         *
         * @return void
         */
        public function boot()
        {
            Form::component('bsText', 'components.form.text', ['name', 'value' => null, 'attributes' => []]);
            Form::component('bsTextArea', 'components.form.textarea', ['name', 'value' => null, 'attributes' => []]);
            Form::component('bsSubmit', 'components.form.submit', ['value' => 'Submit', 'attributes' => []]);
        }
    }
    

    step 2: 创建component
    之前我们说过,要用component的思想,那么每个input就是一个component
    在views/component/form里面创建,这个路径不能错,因为laravel回到这个里面来找omponent
    根据刚才的三个,我们创建了,text,textarea,submit的三个元素
    text.blade.php

    <div class="form-group">
        {{ Form::submit($value, $attributes)}}
    </div>
    

    textarea.blade.php

    <div class="form-group">
        {{ Form::label($name, null, ['class' => 'control-label']) }}
        {{ Form::textarea($name, $value, array_merge(['class' => 'form-control'], $attributes)) }}
    </div>
    

    submit.blade.php

    <div class="form-group">
        {{ Form::submit($value, $attributes)}}
    </div>
    ···
    
    step 3,整合form
    现在我们需要调用之前的每一个input,
    并且提交给controller里面的store,也就是之前我们resource出来的那个
    bstext括号里面我们所输入的就是input的name,之后我们的获取会调用这个名字
    

    {!! Form::open(array('action' => 'todolistController@store', 'method' => 'POST')) !!}
    {{ Form::bsText('text') }}
    {{ Form::bsTextArea('body') }}
    {{ Form::bsText('due date') }}
    {{ Form::bsSubmit('submit', ['class'=>'btn btn-primary']) }}
    {!! Form::close() !!}

    step 4: 关于提交表格,
    回到controller中
    
    public function store(Request $request)
    {
        echo $request->text;
        return "submitted";
    }
    
    现在我们题哦叫submit的时候就会自动弹出submmit页面
    恭喜
    
    
    
    
    
    
    
    
    
    

    相关文章

      网友评论

          本文标题:laravel day5 section 1: create i

          本文链接:https://www.haomeiwen.com/subject/xymxyqtx.html