Страница 1 из 1

Почему не работает кнопка для загрузки картинок ?

Добавлено: 2018.03.10, 07:48
Maxemp
Проблема заключается в том, что после выбора картинки, и нажатии кнопки "upload" вообще ничего не происходит, и ещё когда я выбираю вторую картинку, ту что я выбрал первой пропадает и заменяется второй, хоть такого не должно происходить.

Котроллер:

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

class PhotoController extends Controller
{
  private $service;

  public function __construct( $id, $module, array $config = [], PhotoManageService $service )
  {
    $this->service = $service;
    parent::__construct( $id, $module, $config );
  }

  public function actionCreate()
  {
    $form = new PhotoForm();
    if ($form->load(Yii::$app->request->post()) && $form->validate()){
      try{
        $this->service->addPhotos($form);
        Yii::$app->session->setFlash('success', 'photo uploaded');
        return $this->goHome();
      }catch(\RuntimeException $e){
        Yii::$app->errorHandler->logException($e);
        Yii::$app->session->setFlash($e->getMessage());
      }
    }

    return $this->render('create', ['model' => $form]);

  }

}
Модель :

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

class Photo extends ActiveRecord
{

  public static function create(UploadedFile $file):self
  {
    $photo = new static();
    $photo->file = $file;
    return $photo;
  }

  public static function tableName()
  {
    return '{{%photo}}';
  }

  public function behaviors() {
    return [
      [
        'class' => ImageUploadBehavior::className(),
        'attribute' => 'file',
        'createThumbsOnRequest' => true,
        'filePath' => '@staticRoot/origin/[[pk]].[[extension]]',
        'fileUrl' => '@static/origin/[[pk]].[[extension]]',
        'thumbPath' => '@staticRoot/cache/[[profile]]_[[pk]].[[extension]]',
        'thumbUrl' => '@static/cache/[[profile]]_[[pk]].[[extension]]',
        'thumbs' => [
          'admin' => ['width' => 100, 'height' => 70],
          'thumb' => ['width' => 640, 'height' => 480]
        ],
      ],
    ];
  }

}
Вид:

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

<div class="box box-default">
  <?php $form = ActiveForm::begin([
        'enableClientValidation' => false,
    'options' => ['enctype'=>'multipart/form-data']
  ]); ?>
  <div class="box-body">
    <?= $form->field($model, 'files[]')->widget(FileInput::class, [
      'options' => [
        'accept' => 'image/*',
        'multiple' => true,
      ]
    ])
    ?>
  </div>

  <? ActiveForm::end();?>
</div>
форма:

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

class PhotoForm extends Model
{

  /**
   * @var UploadedFile[]
   */
  public $files;

  public function rules() {
    return [
      ['files', 'each', 'rule' => ['image']],
    ];
  }

  public function beforeValidate(): bool
  {
    if (parent::beforeValidate()){
      $this->files = UploadedFile::getInstances($this, 'files');
      return true;
    }
    return false;
  }
}

Re: Почему не работает кнопка для загрузки картинок ?

Добавлено: 2018.03.10, 10:52
BalykhinAS
А как вы дошли до такой весьма продвинутой реализации но даже не знаете что делать с кнопкой? :-) там где вы взяли этот код (если я правильно понимаю этот пример из вебинары Elisdn) прилагается видео часов на 50 после просмотра которого у вас не будет подобных вопросов

Re: Почему не работает кнопка для загрузки картинок ?

Добавлено: 2018.03.10, 13:16
Maxemp
Wizard писал(а): 2018.03.10, 10:52 А как вы дошли до такой весьма продвинутой реализации но даже не знаете что делать с кнопкой? :-) там где вы взяли этот код (если я правильно понимаю этот пример из вебинары Elisdn) прилагается видео часов на 50 после просмотра которого у вас не будет подобных вопросов
Забавно получилось, я задал такой же вопрос на стаке, там этот код назвали макаронным и посоветовали переписать, а тут его называют продвинутым)

Вы правы, я сделал как у Дмитрия, но чуть-чуть адаптировал под свои нужды,а проблема возможно это из-за того, что я не досмотрел часть вебинара про картинки.

Re: Почему не работает кнопка для загрузки картинок ?

Добавлено: 2018.03.10, 14:20
BalykhinAS
Maxemp писал(а): 2018.03.10, 13:16
Wizard писал(а): 2018.03.10, 10:52 А как вы дошли до такой весьма продвинутой реализации но даже не знаете что делать с кнопкой? :-) там где вы взяли этот код (если я правильно понимаю этот пример из вебинары Elisdn) прилагается видео часов на 50 после просмотра которого у вас не будет подобных вопросов
Забавно получилось, я задал такой же вопрос на стаке, там этот код назвали макаронным и посоветовали переписать, а тут его называют продвинутым)

Вы правы, я сделал как у Дмитрия, но чуть-чуть адаптировал под свои нужды,а проблема возможно это из-за того, что я не досмотрел часть вебинара про картинки.
посмотрите весь вебинер. вы больше времени потратите на метод тыка и все равное не будете знать что вы делаете

Re: Почему не работает кнопка для загрузки картинок ?

Добавлено: 2018.03.10, 14:25
BalykhinAS
Maxemp писал(а): 2018.03.10, 13:16 Забавно получилось, я задал такой же вопрос на стаке, там этот код назвали макаронным и посоветовали переписать, а тут его называют продвинутым)
возможно потому что они не могу понять что происходит в приведенном коде? :D

Re: Почему не работает кнопка для загрузки картинок ?

Добавлено: 2018.03.10, 14:36
BalykhinAS
не знаю в чем там у вам точно проблема но вашей форме не помешала бы кнопка

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

<?= Html::submitButton('Save', ['class' => 'btn btn-success']) ?>

Re: Почему не работает кнопка для загрузки картинок ?

Добавлено: 2018.03.10, 14:54
Maxemp
Wizard писал(а): 2018.03.10, 14:36 не знаю в чем там у вам точно проблема но вашей форме не помешала бы кнопка

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

<?= Html::submitButton('Save', ['class' => 'btn btn-success']) ?>
Кнопка также не работает, а конкретно при нажатии на нее ничего не происходит

Re: Почему не работает кнопка для загрузки картинок ?

Добавлено: 2018.03.10, 15:01
BalykhinAS
Maxemp писал(а): 2018.03.10, 14:54
Wizard писал(а): 2018.03.10, 14:36 не знаю в чем там у вам точно проблема но вашей форме не помешала бы кнопка

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

<?= Html::submitButton('Save', ['class' => 'btn btn-success']) ?>
Кнопка также не работает, а конкретно при нажатии на нее ничего не происходит
покажите исходный код вашей отрендереной формы

Re: Почему не работает кнопка для загрузки картинок ?

Добавлено: 2018.03.10, 15:18
Maxemp
Wizard писал(а): 2018.03.10, 15:01
Maxemp писал(а): 2018.03.10, 14:54
Wizard писал(а): 2018.03.10, 14:36 не знаю в чем там у вам точно проблема но вашей форме не помешала бы кнопка

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

<?= Html::submitButton('Save', ['class' => 'btn btn-success']) ?>
Кнопка также не работает, а конкретно при нажатии на нее ничего не происходит
покажите исходный код вашей отрендереной формы

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

<div class="box box-default">
	<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]) ?>
	<div class="box-body">
		<?= $form->field($model, 'files[]')->widget(FileInput::class, [
			'options' => [
				'accept' => 'image/*',
				'multiple' => true,
			]
		])
		?>
	</div>

	<?= Html::submitButton('Save', ['class' => 'btn btn-success']) ?>
	<? ActiveForm::end();?>
</div>

Re: Почему не работает кнопка для загрузки картинок ?

Добавлено: 2018.03.11, 22:48
ElisDN
Откройте отладочную консоль по F12 в браузере. Мjжет там JavaScript ошибки вываливаются.

Re: Почему не работает кнопка для загрузки картинок ?

Добавлено: 2018.03.12, 09:02
Maxemp
ElisDN писал(а): 2018.03.11, 22:48 Откройте отладочную консоль по F12 в браузере. Мjжет там JavaScript ошибки вываливаются.
Там все пусто.

Re: Почему не работает кнопка для загрузки картинок ?

Добавлено: 2018.03.12, 09:13
ElisDN
Значит не судьба.

Re: Почему не работает кнопка для загрузки картинок ?

Добавлено: 2018.03.12, 10:54
BalykhinAS
Maxemp писал(а): 2018.03.12, 09:02
ElisDN писал(а): 2018.03.11, 22:48 Откройте отладочную консоль по F12 в браузере. Мjжет там JavaScript ошибки вываливаются.
Там все пусто.
потому что выше головы прыгнут сложно) вы взяли код в котором очевидно на данный момент не можете разобраться, попробуйте сделать по мануалу, с нуля. помучаетесь и поймете что просмотр вебинара от и до не такая уж плохая идея. и захватите заодно ООП од Дмитрия. на его блоге есть куча информации... Нет такого метода "PHP - за неделю от новичка до профи", если взялись начинайте штудировать или не беритесь вообще, даром только время потратите

Re: Почему не работает кнопка для загрузки картинок ?

Добавлено: 2018.03.12, 13:12
dmg
Maxemp писал(а): 2018.03.10, 15:18
Wizard писал(а): 2018.03.10, 15:01
Maxemp писал(а): 2018.03.10, 14:54

Кнопка также не работает, а конкретно при нажатии на нее ничего не происходит
покажите исходный код вашей отрендереной формы

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

<div class="box box-default">
	<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]) ?>
	<div class="box-body">
		<?= $form->field($model, 'files[]')->widget(FileInput::class, [
			'options' => [
				'accept' => 'image/*',
				'multiple' => true,
			]
		])
		?>
	</div>

	<?= Html::submitButton('Save', ['class' => 'btn btn-success']) ?>
	<? ActiveForm::end();?>
</div>
у вас просили код формы из браузера.
возможно, тут ошибка. ( <?php )

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

	<? ActiveForm::end();?>

Re: Почему не работает кнопка для загрузки картинок ?

Добавлено: 2018.03.12, 13:24
Maxemp
dmg писал(а): 2018.03.12, 13:12
Maxemp писал(а): 2018.03.10, 15:18
Wizard писал(а): 2018.03.10, 15:01

покажите исходный код вашей отрендереной формы

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

<div class="box box-default">
	<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]) ?>
	<div class="box-body">
		<?= $form->field($model, 'files[]')->widget(FileInput::class, [
			'options' => [
				'accept' => 'image/*',
				'multiple' => true,
			]
		])
		?>
	</div>

	<?= Html::submitButton('Save', ['class' => 'btn btn-success']) ?>
	<? ActiveForm::end();?>
</div>
у вас просили код формы из браузера.
возможно, тут ошибка. ( <?php )

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

	<? ActiveForm::end();?>
Спасибо, вы были правы