OctoberCMS快速入门-20-前端表单
2018-10-24 13:24:10    342    0    0
emengweb

 

我们将利用上一节学习的表单,为movies添加一个表单组件。

首先准备目录,我们将复制contact插件中的contactform组件:

重命名和目录/文件: \plugins\raiseinfo\movies\components\contactform \plugins\raiseinfo\movies\components\ContactForm.php 到: \plugins\raiseinfo\movies\components\actorform \plugins\raiseinfo\movies\components\ActorForm.php

下面修改拷贝过来的文件: \plugins\raiseinfo\movies\components\ActorForm.php

namespace Raiseinfo\Movies\Components;

use Cms\Classes\ComponentBase;


class ActorForm extends ComponentBase
{

    public function componentDetails()
    {
        return [
          'name' => 'Actor Form',
          'description' => 'Enter actor form'
        ];
    }

    public function onSave()
    {
    }

}

\plugins\raiseinfo\movies\components\actorform\default.htm

<form data-request="onSave">

    <label>Name:</label>
    <input type="text" name="name" class="form-control">
    
    <label>Last name:</label>
    <input type="text" name="lastname" class="form-control">
    
    <button type="submit" class="btn btn-success form-control">Save</button>

</form>

\plugins\raiseinfo\movies\Plugin.php 修改registerComponents方法:

    public function registerComponents()
    {
        return [
            'Raiseinfo\Movies\Components\Actors' => 'actors',
            'Raiseinfo\Movies\Components\ActorForm' => 'actorform'
        ];
    }

测试这个组件是否可用(虽然没有功能):

我们将创建一个新的页面:

我们点击保存,系统没有任何反应,因为我们没有对onSave方法进行定义。

use Illuminate\Support\Facades\Input;
use Raiseinfo\Movies\Models\Actor;

...

    public function onSave()
    {

        $actor = new Actor();
        $actor->name = Input::get('name');
        $actor->lastname = Input::get('lastname');
        $actor->save();

    }

下面我们试试可否添加演员信息

保存演员信息成功了。 是不是还有些不完美?起码要保存成功需要给用户一个提示吧。 October可以通过Flash实现发送消息。

C:\laragon\www\octobermovie\plugins\raiseinfo\movies\components\ActorForm.php

namespace Raiseinfo\Movies\Components;

use Cms\Classes\ComponentBase;


use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Redirect;
use Raiseinfo\Movies\Models\Actor;
use Flash;


class ActorForm extends ComponentBase
{

    public function componentDetails()
    {
        return [
          'name' => 'Actor Form',
          'description' => 'Enter actor form'
        ];
    }

    public function onSave()
    {

        $actor = new Actor();
        $actor->name = Input::get('name');
        $actor->lastname = Input::get('lastname');
        $actor->save();

        Flash::success('Actor add success');

        return Redirect::back();
    }

}

C:\laragon\www\octobermovie\plugins\raiseinfo\movies\components\actorform\default.htm

<form data-request="onSave">

    <label>Name:</label>
    <input type="text" name="name" class="form-control">

    <label>Last name:</label>
    <input type="text" name="lastname" class="form-control">

    <button type="submit" class="btn btn-success form-control">Save</button>

    {% flash success %}

        <p>{{ message }}</p>

    {% endflash %}
    
</form>

添加新演员,提示信息显示正常

 

上一篇: uikit抽屉与响应式可见性

下一篇: October CMS - 快速入门 19 - 表单验证

342 人读过
文档导航