今天我们要来说一下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页面
恭喜
网友评论