Передача значений из БД пустыми

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
cellofun
Сообщения: 4
Зарегистрирован: 2018.10.30, 07:57

Передача значений из БД пустыми

Сообщение cellofun »

Перенесла работающий проект на сервер, создала соответствующую таблицу. Могу добавлять данные в бд с сайта, но пользовательская таблица, которая их отображает, содержит пустые строки по количеству записей бд. Как это можно исправить?

model.php

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

namespace app\models;

use yii\db\ActiveRecord;

class Post extends ActiveRecord
{
    public static function tableName()
    {
        return 'oth1_post';
    }
    public $upload;

    public function rules()
    {
        return [
            [['title'], 'required'],
            [['title'], 'string', 'max' => 255],
            [['upload'], 'file'],
        ];
    }
}
SiteController.php

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

public function actionIndex()
    {
        $model = new Post();
        $this->handlePostSave($model);

        return $this->render('index', [
            'model' => $model,
        ]);
    }
index.php

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

use yii\helpers\Html;
use yii\widgets\ActiveForm;
use app\models\Post;

$this->title = 'Загрузка файлов';
$model = new Post();
$posts = Post::find()->all();
?>
<div class="site-index card border-secondary">
    <div class="card-header"><h3><?= Html::encode($this->title) ?></h3></div>
    <?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]) ?>
    <div class="body-content card-body">
        <div class="form-group row">
            <label class="col-sm-4 col-form-label">Файл</label>
            <label class="btn btn-outline-primary custom-button">
                <?= $form->field($model, 'upload', ['template' => "{label}\n{input}"])->label('Выбрать файл')->fileInput(['class' => 'hidden']) ?>
            </label>
        </div>
        <div class="form-group row">
            <label class="col-sm-4 col-form-label">Описание</label>
            <div class="col-sm-8">
                <?= $form->field($model, 'title')->textInput(['class' => 'form-control'])->label(false) ?>
            </div>
        </div>
        <div class="col-sm-offset-4">
            <?= Html::submitButton('Загрузить', ['class' => 'btn btn-primary single-button mb60']) ?>
        </div>
        <table class="table">
            <thead>
            <tr>
                <th class="col-md-4">Наименование</th>
                <th class="col-md-6">Описание</th>
                <th class="col-md-2">Действие</th>
            </tr>
            </thead>
            <tbody>
            <?php foreach ($posts as $post):?>
                <tr>
                    <td class="hidden"><?php $post->id ?></td>
                    <td><?php $post->file ?></td>
                    <td><?php $post->title ?></td>
                    <td><?php Html::a('Скачать', ['download', 'id'=>$post->id]) ?></td>
                </tr>
            <?php endforeach;?>
            </tbody>
        </table>
    </div>
    <?php ActiveForm::end() ?>
</div>
Изображение

Изображение
Аватара пользователя
Alexum
Сообщения: 683
Зарегистрирован: 2016.09.26, 10:00

Re: Передача значений из БД пустыми

Сообщение Alexum »

1) Во view такого быть не должно:

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

$model = new Post();
$posts = Post::find()->all();
2)

"echo имеет также краткую форму, представляющую собой знак равенства, следующий непосредственно за открывающим тегом. До PHP 5.4.0 этот сокращенный синтаксис работал только с включенном параметром конфигурации short_open_tag.

У меня есть <?=$foo?> foo."
cool
Сообщения: 9
Зарегистрирован: 2015.12.07, 11:11

Re: Передача значений из БД пустыми

Сообщение cool »

Так вы ж ничего не выводите, ничего и не выводится :)

Вместо

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

<td class="hidden"><?php $post->id ?></td>
должно быть

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

<td class="hidden"><?php echo $post->id ?></td>
или

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

<td class="hidden"><?= $post->id ?></td>
cellofun
Сообщения: 4
Зарегистрирован: 2018.10.30, 07:57

Re: Передача значений из БД пустыми

Сообщение cellofun »

cool писал(а): 2018.11.21, 10:24 Так вы ж ничего не выводите, ничего и не выводится :)
О, боги... На университетском сервере выключены short_open_tag, так что <?= ?> я заменила на <?php ?>, а echo добавить забыла :|
Спасибо! Теперь данные выводятся в таблице
someweb
Сообщения: 552
Зарегистрирован: 2017.03.09, 10:12

Re: Передача значений из БД пустыми

Сообщение someweb »

<?= это не short_open_tag
http://php.net/manual/ru/ini.core.php#i ... t-open-tag

У вас нет экранирования, а студенты народ любопытный...
Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.
Ответить