- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在同一个表单上有多个模型我不想在两个模型上保存数据,但我只想在 View 文件上显示一个变量
我有两张 table 组织者
和事件
Organiser
将登录并创建事件
现在两个表中有几个共同的字段所以当登录用户点击 Create Event
按钮时,我想在表单上显示 Organiser
表中的 address
这是我到目前为止所做的这可能不是正确的方法所以让我知道是否可以通过任何其他更简单的方式实现这一目标
public function actionCreate()
{
$model = new Event();
$model2 = $this->findModel2(Yii::$app->user->id);
if ($model->load(Yii::$app->request->post())) {
if($_POST['User']['address'] == null)
{
$model->location = $model2->address;
}
else{
$model->location = $_POST['User']['address'];
}
$model->is_active = 1 ;
$model->save();
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('create', [
'model' => $model,
'model2' => $model2
]);
}
}
protected function findModel2($id)
{
if (($model2 = User::findOne($id)) !== null) {
return $model2;
} else {
throw new NotFoundHttpException('The requested page does not exist.');
}
}
这是我的_form.php
代码
<?php $form = ActiveForm::begin([
'options' => [
'id' => 'create-event-form'
]
]); ?>
<?= $form->field($model, 'interest_id')->dropDownList(
ArrayHelper::map(Areaintrest::find()->all(),'id','area_intrest'),
['prompt'=> 'Select Event Category']
) ?>
<?= $form->field($model, 'title')->textInput(['maxlength' => true]) ?>
<?php
if ($model->isNewRecord){
echo $form->field($model2,'address')->textInput(['class' => 'placepicker form-control'])->label('Location');
}
else
echo $form->field($model,'location')->textInput(['class' => 'placepicker form-control']);
?>
<di"form-group">
<?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-danger' : 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?>
现在这里的问题似乎是,在保存部分时抛出 error
说 unknown property address
因为数据库表 Event< 中不存在该字段
我只想将该数据显示在我的 create form
那我该怎么办
这是表结构
Organiser Event
organiser_id event_id
username organiser_id
clubname title
image location
email
firstname
lastname
address
错误页面是这样的
Unknown Property – yii\base\UnknownPropertyException
Getting unknown property: common\models\Event::address
这是我的事件
模型
class Event extends \yii\db\ActiveRecord
{
public static function tableName()
{
return 'event';
}
public function rules()
{
return [
[['organiser_id', 'interest_id', 'title', 'location'], 'required'],
[['organiser_id', 'interest_id'], 'integer'],
[['title', 'location'], 'string', 'max' => 255],
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id' => 'ID',
'organiser_id' => 'Organiser ID',
'interest_id' => 'Event Type',
'title' => 'Event Title',
'location' => 'Location'
];
}
public function getOrganiser()
{
return $this->hasOne(User::className(), ['organiser_id' => 'organiser_id']);
}
这是我的 User
模型代表 Organiser
表和前端模型 SignUp.php
中的模型名称
class SignupForm extends Model
{
public $username;
public $address;
public $password;
public $password_repeat;
public function rules()
{
return [
['username', 'filter', 'filter' => 'trim'],
['username', 'required'],
['address', 'required'],
['username', 'unique', 'targetClass' => '\common\models\User', 'message' => 'This username has already been taken.'],
['username', 'string', 'min' => 2, 'max' => 255],
[['file'], 'file', 'extensions'=>'jpg, gif, png'],
['password', 'required'],
['password', 'string', 'min' => 6],
['password_repeat', 'compare', 'compareAttribute' => 'password'],
];
}
public function attributeLabels()
{
return [
'password_repeat' => 'Confirm Password',
'address' => 'Address',
'username' => 'Username',
];
}
public function signup()
{
if ($this->validate()) {
$user = new User();
$model = new SignupForm();
$user->address = $this->address;
$user->username = $this->username;
$user->setPassword($this->password);
$user->generateAuthKey();
if ($user->save()) {
return $user;
}
}
return null;
}
所以我想在 Create event
表单的 location
字段中显示 organiser.address
希望你现在能明白谢谢
最佳答案
可能你的函数应该是这样的
public function actionCreate()
{
$event= new Event();
$user= $this->findModel2(Yii::$app->user->id);
$event->location = $user->address;
if ($event->load(Yii::$app->request->post()) && $event->save()) {//active can set by default validator
return $this->redirect(['view', 'id' => $event->id]);
}
return $this->render('create', [
'event' => $event
]);
}
并且在表单中你总是显示位置。然后您可以在更新和创建中使用它,而无需查看 ifs。希望这会帮助你。
关于javascript - 同一个 ActiveForm yii2 上的多个模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32493945/
我无法在新创建的按钮上获得新创建的窗体上的控件计数,我创建了 5 个控件,但只显示了一个。如果我无法获得控件总数,那么我也无法获得控件类型、名称等。 private void button2_Clic
这是我的模特联系人, public function rules() { return [ [['fname', 'status','mobile',], 'required'
我有一个 Jquery 函数来激活和停用基于当前表单的表单。当我单击提交按钮时,如果我将它设置为 ID,我可以在页面加载时获取事件表单的值,但第二个表单没有任何内容。当我将它设置为类时,它似乎根本没有
本文实例讲述了Yii2创建表单(ActiveForm)的方法。分享给大家供大家参考,具体如下: 由于表单涉及到一些验证方面的信息,属性设置又比较多、比较复杂,所以哪里有什么不正确的地方请留言指点
我知道这是糟糕的设计,但我一直将对 GUI 表单类的控制权转移到 C# 程序中的其他类。 这已经工作很长时间了,使用: var form = Form.ActiveForm as Form1; 随着我
在一个好的项目中,它应该是这样的: jQuery(document).ready(function() { jQuery('#form-signup')
在Yii 1.X版本中,我们可以在CActiveForm类的clientOptions属性中使用afterValidate,请告诉我正确的实现方法Yii2 中也是如此 最佳答案 我刚刚看到这些变化。我
下面的 View 由ajax渲染并从 Controller 返回到JS,JS将 View 放入正确的容器中: $page = $this->renderAjax("view", [
我正在创建一个表单 View ,我想使用官方的选项卡小部件组织具有选项卡结构的表单字段。 是否可以使用包含事件表单字段的 div 元素的 id(或类)来初始化 Tabs 小部件? 最佳答案 如何管理它
我想使用 yii2 ActiveForm 创建表单。这是我的代码: [ 'class' => 'form-inline' ] ]); ?> Email
根据official tutorial Yii2的。我为报名表创建了一个 View : field($model, 'name')->label('Your Name')
在我的mysql数据库中存在一个articleID作为AI PK和一个articleNumber,用户可以编辑。 问题: 在yii2 ActiveForm中,我想让用户输入articleNumber,
在我使用的旧 Yii 中 labelEx($model,'text').'* '); ?> 我应该在 yii2 中使用什么来标记? 最佳答案 Yii2 的方式如下: field($model,
我正在使用 Yii2 和 ActiveForm。 通常,如果 ActiveForm 中的任何输入已被使用,输入的名称应与 ActiveRecord 属性相同,即数据库中相关表的列名称。 出于某种原因我
我正在使用 Yii 开发一个项目。 我需要在网站的许多页面上使用 jquery ui。因此,我在网站布局中添加了 jquery 核心库和 jquery ui 库,以便在所有页面上访问它们。 但是它会在
在我的表单模型中,我有一个以这种方式定义的字段的自定义验证函数 class SignupForm extends Model { public function rules() {
我如何使用符合这些要求的 ActiveForm? 用ajax提交表单。 使用ajax提交之前:检查是否有错误退出。 提交后:如果服务器响应保存失败结果,则显示字段输入下的字段错误。 最佳答案 这是你的
在我的下拉列表中,当我选择百分比时,“vendor 佣金”(下一个字段)的标签应为“百分比”。当我选择金额时,标签应为“金额” if($model->userType!="ADMIN" && $mod
如何自动禁用 Yii(验证 onblur)ajax 验证?我只想在按下提交按钮后进行验证。 最佳答案 您想使用 enableAjaxValidation验证您的表单,同时不想在每个 blur 上触发
在同一个表单上有多个模型我不想在两个模型上保存数据,但我只想在 View 文件上显示一个变量 我有两张 table 组织者 和事件Organiser 将登录并创建事件现在两个表中有几个共同的字段所以当
我是一名优秀的程序员,十分优秀!