Имеется Yii2 Advanced, а также стандартный шаблон. Пытаюсь редактировать его под свои задачи, а именно тестовую фриланс площадку.
На данный момент создана база данных и идет вывод заданий на странице. Это представлено в следующем виде:
Выводятся лишь задания, у которых пункт available в базе данных равен нулю. Если он равен единице, то задание имеет исполнителя.
Когда пользователь нажимает на "Принять", то в идеале должен отправляться сигнал в контроллер, где в базе данных на соответствующем заказе изменяется available на единицу.
Проблема в том, что я никак не могу передать id заказа через нажатие кнопки. Изначально я пробовал работать с ней как с кнопкой, пытался использовать ActiveForm и прочее, однако ничего не вышло. Удалось вывести id заказа в Url, однако принять его в контроллере так и не смог. Буду благодарен любой помощи.
Код контроллера:
<?php
namespace frontend\controllers;
use yii\web\Controller;
use yii\data\Pagination;
use app\models\Orders;
use yii\helpers\Url;
use yii\web\Request;
class OrdersController extends Controller
{
public function actionIndex()
{
$query = Orders::find();
$pagination = new Pagination([
'defaultPageSize' => 5,
'totalCount' => $query->count(),
]);
$orders = $query->orderBy('available')
->offset($pagination->offset)
->limit($pagination->limit)
->all();
return $this->render('index', [
'orders' => $orders,
'pagination' => $pagination,
]);
}
public function actionTakeOrder()
{ $query = Orders::find();
$request = Yii::$app->request;
$get = $request->get(value);
$query = orders::findOne($get);
$Orders->available = 1;
$customer->update();
}
}
Код index.php
<?php
use yii\helpers\Html;
use yii\widgets\LinkPager;
use yii\bootstrap\ActiveForm;
$this->title = 'Поиск заказа';
?>
<h1>Доступные заказы</h1>
<ul>
<form action="OrdersController.php" method="post">
<table>
<?php foreach ($orders as $orders): ?>
<tr>
<td><?= Html::encode("{$orders->header}") ?></td>
<td><?= $orders->text ?></td>
<td><?= $orders->size ?></td>
<fieldset><td>
<?= Html::a('Принять', ['orders/index','value' => ($orders->id)], ['class'=>'btn btn-primary']) ;?>
</td>
</fieldset>
</tr>
<?php endforeach; ?>
</form>
</ul>
</table>
<?= LinkPager::widget(['pagination' => $pagination]) ?>
Код Orders.php (сгенерированый в Gii)
<?php
namespace app\models;
use Yii;
class Orders extends \yii\db\ActiveRecord
{
public static function tableName()
{
return 'orders';
}
public function rules()
{
return [
[['user', 'header', 'text', 'size', 'available'], 'required'],
[['user', 'size', 'available'], 'integer'],
[['header'], 'string', 'max' => 60],
[['text'], 'string', 'max' => 255]
];
}
public function attributeLabels()
{
return [
'id' => 'ID',
'user' => 'User',
'header' => 'Header',
'text' => 'Text',
'size' => 'Size',
'available' => 'Available',
];
}
}