标签: yii

如何在使用ajax在下拉列表中选择选项时显示文本框

这是我正在使用的下拉菜单..

    <?php echo $form->labelEx($model,'status'); ?>
            <?php echo $form->dropDownList($model,'status',
array('0' =>'In active', '1'=> 'Active'),
array( 'onChange' => 'javascript:description()' )); ?>
Run Code Online (Sandbox Code Playgroud)

如何在动态选择非活动状态时显示文本框以进行说明...

请为初学者推荐一些yii + ajax教程

ajax yii

1
推荐指数
1
解决办法
1万
查看次数

如何使用Yii的$ form-> labelEx为标签添加跨度?

我希望生成以下标记:

<label>some label here <span>(optional)</span></label>
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点,使用Yii labelEx或只是标签

谢谢

yii

1
推荐指数
1
解决办法
2万
查看次数

使用Yii execute()可以在这里进行SQL注入吗?

我见过以下代码:

$id = $_GET["user"]; 
 $auth = $_GET["id"]; 
 $sql = 'DELETE FROM categories where user_id = '.$id.' and category_id = '.$auth;          
 Yii::app()->db->createCommand($sql)->execute();
Run Code Online (Sandbox Code Playgroud)

我被告知这段代码不行,因为它无法允许sql注入.

是因为$ _GET没有被正确过滤?

不会是Yii :: app() - > db-> createCommand($ sql) - > execute(); 避免那样?

或者当我们到达那里时,我们应该已经检查了where子句中的数据?

sql-injection yii

1
推荐指数
1
解决办法
3273
查看次数

大规模分配给YII AR模型

我遇到了奇怪的问题(?).也许这是记录的功能,但我找不到它.

我有一个来自CActiveRecord的模型类.在模型中,我有一个方法rules来玷污验证规则.

我有控制器的动作whatever.在这个动作中,我正在尝试使用从$ _POST获得的数据来分配模型属性.这是来自conroller的简化代码片段

$model=new SomeModel();

if(isset($_POST['SomeForm']))
{
    $model->attributes=$_POST['SomeForm'];
    if($model->validate())
    {
         $model->save();

    }
}
Run Code Online (Sandbox Code Playgroud)

问题在于以下内容.使用大量的assiginig并非所有领域都在努力.只有声明了验证规则的文件SomeModel::rules().如果我要为不应该验证的字段分配数据,那么该字段将变为空数据库.

有人可以解释会发生什么吗?

提前致谢

php activerecord yii

1
推荐指数
1
解决办法
1235
查看次数

在Yii中从MySQL获取最后插入的ID

我想在视图> _form.php文件中显示数据库中的最后一个登录ID.我已经在_form.php文件中生成了这样的代码

  <div class="row">
    <?php echo $form->labelEx($model,'id'); ?>
    <?php echo Yii::app()->db->getLastInsertId('Form');?>
    <?php echo $form->error($model,'id'); ?>
  </div>
Run Code Online (Sandbox Code Playgroud)

这里表格是表格和型号名称.但我仍然得到 ID:0.错误的部分是什么?

php mysql yii

1
推荐指数
3
解决办法
1万
查看次数

1
推荐指数
1
解决办法
1549
查看次数

Yii Lazy Loading

你如何在Yii中正确使用延迟加载?我有两个型号,公司和设置.该关系在公司方面定义为:

'settings' => array(self::HAS_ONE, 'Company', 'settingsId'),
Run Code Online (Sandbox Code Playgroud)

在设置方面:

'company' => array(self::BELONGS_TO, 'Company', 'settingsId'),
Run Code Online (Sandbox Code Playgroud)

现在,为什么这在公司模型中不起作用:

$settings = $this->settings;
echo $settings->someSetting;
Run Code Online (Sandbox Code Playgroud)

错误是

Property "Company.someSetting" is not defined.
Run Code Online (Sandbox Code Playgroud)

php yii

1
推荐指数
1
解决办法
1127
查看次数

Yii基本url重写

我是php的新手,mvc的新手,yii的新手,以及url-rewriting的新手.所以,对不起,如果我问一些非常基本的东西.

我隐藏了index.php(来自yii论坛中讨论的htaccess方法)

在我的urlmanager中,我有这个,

'urlFormat'=>'path',
             'rules'=>array( 
             '<controller:\w+>/<id:\d+>'=>'view',
             '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
             '<controller:\w+>/<action:\w+>'=>'<controller>/<action>' 
              ),
             'showScriptName'=>false,
Run Code Online (Sandbox Code Playgroud)

我在view/site文件夹中有3个文件.

  1. '旅程',
  2. '邀请',
  3. 'LinkedIn'

现在,我的主页应该重定向到"旅程"操作(即应该打开'site/journey.php')

所以,我猜,这将是

'/' => 'site/journey'
Run Code Online (Sandbox Code Playgroud)

它也有效.

现在,我希望'旅程/邀请'应该调用'邀请'动作,即应该打开'site/invite.php'

并且,'journey/linkedin'应该调用'linkedin'动作,即'site/linkedin.php'.

但,

'journey/invite' => 'site/invite',
'journey/linkedin' => 'site/linkedin'
Run Code Online (Sandbox Code Playgroud)

不管用.

此外,有人可以帮助我理解这一点,

<controller:\w+>/<id:\d+>
Run Code Online (Sandbox Code Playgroud)

即什么是url中的控制器以及'w +'是什么意思?

对指南的引用也会有所帮助.

在bool.dev的建议之后编辑:

改变了代码,如你所说(我之前也尝试过,删除所有默认规则).现在我的网址管理员就像,

    '/' => 'site/journey',
    'journey/invite' => 'site/invite',
    'journey/linkedin' => 'site/linkedin',
    '<controller:\w+>/<id:\d+>'=>'view',
    '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
    '<controller:\w+>/<action:\w+>'=>'<controller>/<action>', 
Run Code Online (Sandbox Code Playgroud)

但它会引发错误

"警告:require_once():open_basedir限制有效.文件(/var/xyz.com /../ yii/framework/yii.php)不在允许的路径中:(/ usr/share/php:/usr/share/pear:/ usr/share/php/libzend-framework-php:/ var/* /tmp:/var/xyz.com)第12行/var/xyz.com/journey.php警告: require_once(/var/xyz.com /../ yii/framework/yii.php):无法打开流:第12行/var/xyz.com/journey.php中不允许操作致命错误:require_once():无法打开所需的'/var/xyz.com/../yii/framework/yii.php'(include_path ='.:/ usr/share/php:/ usr/share/php/libzend-framework-php')in第12行的/var/xyz.com/journey.php'

当我做xyz.com/journey/invite 甚至xyz.com/journey

编辑:

这是一个许可问题,@ bool.dev建议将具体规则放在最佳工作上:)

url-rewriting url-routing yii

1
推荐指数
1
解决办法
8258
查看次数

Yii从db获取最旧的对象 - findByAttributes

使用FindByAttributes查询我想从我的数据库中获取最旧的元素.

我的代码:

$oMemberLocked = MembersLocked::model()->findByAttributes(array(
        'lockedid' => $this->id,
        'request' => 2,
    ));
Run Code Online (Sandbox Code Playgroud)

MembersLocked对象具有属性"date".

如何获得具有最大日期的元素?

yii

1
推荐指数
1
解决办法
2485
查看次数

Yii模型:在Yii模型中使用动态表名

我有一个Yii模型将使用(稍后)多个数据库,表前缀将基于代码.

例如:

AMI_tablename,BMI_ AMI_tablename等

这些所有表都相同但在不同的数据库中.

我想知道如何在运行时向Yii模型提供动态表名?

我尝试使用setter函数,但父类CActiveRecord给出了一个错误,因为它没有从子模型类中获取值.

所以这是我的模型代码(只有我有问题的部分)

class RevShareModel extends CActiveRecord
{

    public $prefix;

    public static function model($className=__CLASS__)
    {
        return parent::model($className);
    }

    /**
     * @return string the associated database table name
     */
    public function tableName()
    {
        return $this->prefix . '_revshare_model';
    }
Run Code Online (Sandbox Code Playgroud)

现在在我的控制器的某个地方

$obj = RevShareModel::model();
$obj->prefix ="BMI";
$obj->tableName();
$obj->findByPk(1);

exit;
Run Code Online (Sandbox Code Playgroud)

但我得到的错误是:

CDbException

The table "_revshare_model" for active record class "RevShareModel" cannot be found in the database.

C:\wamp\www\framework\db\ar\CActiveRecord.php(2264)
Run Code Online (Sandbox Code Playgroud)

好像当CActiveRecord调用tableName()方法时,它不会获得$前缀.

php yii yii-cmodel

1
推荐指数
1
解决办法
9669
查看次数