从后端表单 [octobercms] 获取输入值

Get input values from backend form [octobercms]

除了 $result = Input::get('term'); 之外,此代码中的一切工作正常,请有人帮助我获取字段 term 的输入值。当我这样做时 $result = 8; 一切正常。

Form in plugin backend

在我的插件中 "Lesson" 模型

<?php

 namespace Cng\Tennis\Models;

 use Model;
 use Flash;
 use Db;
 use Input;
 use request;
 use Cng\Tennis\Models\Term as termModel;

 class Lesson extends Model
 {  
public function getSdateOptions () {

  $result = Input::get('term');
  $term = termModel::select('id','start_date')->where('id',  $result )->first();

   if ($this->term_id == $result ) { 
        return [$term->id => $term->start_date];   
    }
    else{
      return ['Select a date' => 'Select a date' ];
      }
    }

public function getFdateOptions () {
        return ['Select a date' => 'Select a date' ];
    }

在 yaml 中

    term:
        label: Term
        nameFrom: name
        descriptionFrom: description
        span: auto
        containerAttributes: {  }
        type: dropdown
        emptyOption: Select
        tab: 'Event Details'
        dependsOn:
            - location

    sdate:
        label: 'Start Date'
        mode: date
        span: left1
        cssClass: ''
        required: 1
        dependsOn:
            - term
        type: dropdown
        tab: 'Event Details'
        disabled: 1

尝试将 select('id','start_date') 替换为 all()find($result),如果您只想获取开始日期,请执行 pluck->('start_date')。似乎你不能在 eloquent 模型上使用 select,这在我的测试中是有意义的。

这是我 运行 select 没有数据库调用时得到的结果:

    $names = Products::select('id','name')->where('id', 1);
    return $names;

然而,当我通过正常的集合查询方法访问模型时,我得到了这个:

    $names = Products::all()->where('id', 1);
    return $names;

最后,您可以使用 $names = Products::find('1')->pluck('name')->first();1 替换为 $result,将 'name' 替换为 'start_date'

首先,您的问题是由于 term 字段没有在 HTML 中命名。如果您在浏览器中查看生成的表单输入,或者在触发 dependsOn 触发器时发送的 AJAX 请求中,您会注意到 term 的实际字段名称字段以表单小部件的别名为前缀(可能是 Form,因此在这种情况下,实际字段名称是 Form[term])。

但是,您甚至根本不必使用 Input,您可以直接在函数中引用模型 属性 term 字段:

$options = [0 => 'Select a start date'];
$term = TermModel::find($this->term);

if ($term) {
    $options = [$term->id => $term->start_date];
}

return $options;

有关如何正确使用 dependsOn 属性 的更多信息,请参阅 https://octobercms.com/docs/backend/forms#field-dependencies。请注意,在您的情况下,您可能会将其与 trigger 属性 结合使用,以隐藏 start_date 字段,直到您在 term 字段中选择了有效选项。