Табличный ввод

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
des1roer
Сообщения: 391
Зарегистрирован: 2015.02.06, 17:03
Контактная информация:

Табличный ввод

Сообщение des1roer »

как создать таблицу с полями ввода, а потом все это сохранить?
Onotole
Сообщения: 1808
Зарегистрирован: 2012.12.24, 12:49

Re: Табличный ввод

Сообщение Onotole »

Я в легком ступоре...
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Табличный ввод

Сообщение yiijeka »

Он наверное имеет ввиду GridView c editableColumn. ТС выражайтесь яснее :)
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Табличный ввод

Сообщение zelenin »

des1roer писал(а):как создать таблицу с полями ввода, а потом все это сохранить?

Код: Выделить всё

save(new CreateTable()); 
Аватара пользователя
des1roer
Сообщения: 391
Зарегистрирован: 2015.02.06, 17:03
Контактная информация:

Re: Табличный ввод

Сообщение des1roer »

да читаю. гридвью наверно не то. думаю создать таблицу с textField
изюминка в том, что у меня не таблица, а выборка из нескольких.
ну координаты каждого поля я определить могу
Изображение
это ид горизонта и ид элемента.
что мне нужно сделать чтобы передать ид1, ид2 и значение?
создать форму, в ней текстфилды, при клике посылать запрос к контролеру (не крейт), ну и там уж на основании пост запроса сохранять.
как сделать пост запрос к контролеру? аяксбаттон?
Аватара пользователя
des1roer
Сообщения: 391
Зарегистрирован: 2015.02.06, 17:03
Контактная информация:

Re: Табличный ввод

Сообщение des1roer »

в примитивном виде пока так

Код: Выделить всё

<?php
$form = $this->beginWidget('bootstrap.widgets.TbActiveForm', array(
    'id' => 'plan-form',
    // Please note: When you enable ajax validation, make sure the corresponding
    // controller action is handling ajax validation correctly.
    // There is a call to performAjaxValidation() commented in generated controller code.
    // See class documentation of CActiveForm for details on this.
    'enableAjaxValidation' => false,
        // 'htmlOptions'=>array('enctype'=>'multipart/form-data'),
        ));
?>

<table align="center" width="98%" height="90%" border="1">
    <?php
    $cols = Plan::templateElem(49);
    echo '<tr><th>Горизонт</th>';
    for($i = 1, $cnt = count($cols); $i < $cnt; $i++)
    {
        echo '<th>';
        echo $id = $cols[$i]['name'];
        echo '</th>';
    }
    echo '</tr>';
    $rows = Department::onlyChild(5);
    for($y = 0, $cnt = count($rows); $y < $cnt; $y++)
    {
        echo '<tr>';
        for($x = 0, $cnt = count($cols); $x < $cnt; $x++)
        {
            echo '<td>';
            echo $cols[$x]['id'] . ' ' . $rows[$y]['id'];
            echo '</td>';
        }
        echo '</tr>';
    }
    ?>
</table>

<?php
$this->widget(
        'bootstrap.widgets.TbButton', array(
        'label' => 'Сохранить',
        'url' => 'mysave',
        )
);
?>
<?php $this->endWidget(); ?>
Аватара пользователя
des1roer
Сообщения: 391
Зарегистрирован: 2015.02.06, 17:03
Контактная информация:

Re: Табличный ввод

Сообщение des1roer »

вот примерно такое получается
view

Код: Выделить всё

<?php
$form = $this->beginWidget('bootstrap.widgets.TbActiveForm', array(
    'id' => 'plan-form',
    'enableAjaxValidation' => false,
        ));
?>

<table align="center" width="98%" height="90%" border="1">
    <?php
    $cols = Plan::templateElem(49);
    echo '<tr><th>Горизонт</th>';
    for($i = 1, $cnt = count($cols); $i < $cnt; $i++)
    {
        echo '<th>';
        echo $id = $cols[$i]['name'];
        echo '</th>';
    }
    echo '</tr>';
    $rows = Department::onlyChild(5);    
    for($y = 0, $cnt = count($rows); $y < $cnt; $y++)
    {
        echo '<tr>';
        for($x = 0, $cnt = count($cols); $x < $cnt; $x++)
        {
            $id_elem = $cols[$x]['id'];
            $id_lvl  = $rows[$y]['id'];
            echo '<td>';
            //echo $cols[$x]['id'] . ' ' . $rows[$y]['id'];               
                echo CHtml::textField("elem[$id_lvl][$id_elem]",null, array('class' => 'span1'));              
            echo '</td>';
        }
        echo '</tr>';
    }
    ?>
</table>
    <?php
    $this->widget('bootstrap.widgets.TbButton', array(
        'buttonType' => 'submit',
        'icon' => 'ok',
        'type' => 'success',
        'label' => 'Сохранить',
    ));
    ?>
<?php $this->endWidget(); ?>
controller

Код: Выделить всё

    public function actionPlan()
    {
        $model = new AnalizCreate;
        if (isset($_POST['elem']))
        {
            $transaction = Yii::app()->db->beginTransaction();
            try
            {
                $command = Yii::app()->db->createCommand();
                $Ids = $_POST['elem'];
                $cnt = max(array_keys($Ids));
                $min = min(array_keys($Ids));
                for($i = $min; $i <= $cnt; $i++)
                {
                    $lvl = $Ids[$i];
                    if (isset($lvl))
                    {
                        $max_x = max(array_keys($lvl));
                        $min_x = min(array_keys($lvl));
                        for($i = $min_x; $i <= $max_x; $i++)
                        {
                            $command->insert('a_analiz_data', array(
                                'value' => $lvl[$i],
                                'elem_id' => $i,
                                'user_id' => Yii::app()->user->id,
                            ));
                        }
                    }
                }

                $transaction->commit();
                Yii::app()->user->setFlash($messageType, $message);
                //$this->redirect(array('admin'));
            }
            catch (Exception $e)
            {
                $transaction->rollBack();
                Yii::app()->user->setFlash('error', "{$e->getMessage()}");
                //$this->refresh();
            }
        }
        $this->render('plan');
    } 
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Табличный ввод

Сообщение yiijeka »

Так а где input с elem в таблице? Что же форма отправляет то и не понятно решили вы вопрос или рассказываете просто :)
Аватара пользователя
des1roer
Сообщения: 391
Зарегистрирован: 2015.02.06, 17:03
Контактная информация:

Re: Табличный ввод

Сообщение des1roer »

как где

Код: Выделить всё

echo CHtml::textField("elem[$id_lvl][$id_elem]",null, array('class' => 'span1')); 
в контролере проверяем не пустые ли элементы. если не пустые то сохраняем
Ответить