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

问题描述 投票:0回答:2

除了$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
octobercms octobercms-plugins octobercms-backend
2个回答
1
投票

首先,您的问题是由于term字段未在HTML中命名。如果您在浏览器中查看生成的表单输入,或者在触发dependsOn触发器时发送的AJAX请求中,您会注意到term字段的实际字段名称前缀为Form小部件的别名(可能是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;

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


-1
投票

尝试用select('id','start_date')all()替换find($result),如果你只想抓住开始日期,请执行pluck->('start_date')。似乎你不能在我的测试中有用的雄辩模型上使用select。

这是我在没有DB调用的情况下运行select时得到的结果:

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

enter image description here

但是当我通过普通的集合查询方法访问模型时,我得到了这个:

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

enter image description here

最后你可以使用$names = Products::find('1')->pluck('name')->first();替换1$result'name''start_date'在你的情况下。

© www.soinside.com 2019 - 2024. All rights reserved.