A package of helper classes for working with web components in Yii2.
Run
php composer.phar require mspirkov/yii2-webor add
"mspirkov/yii2-web": "^0.1"to the require section of your composer.json file.
A wrapper for \yii\web\Request for easier handling of GET and POST parameters.
It contains the following methods:
getGetInt- gets the value of a GET parameter by its name and tries to convert it to an integer.getGetFloat- gets the value of the GET parameter by its name and tries to convert it to a floating-point number.getGetBool- gets the value of the GET parameter by its name and tries to convert it to a boolean.getGetString- gets the value of the GET parameter by its name and tries to convert it to a string.getGetArray- gets the value of the GET parameter by its name and tries to convert it to an array.getPostInt- gets the value of a POST parameter by its name and tries to convert it to an integer.getPostFloat- gets the value of the POST parameter by its name and tries to convert it to a floating-point number.getPostBool- gets the value of the POST parameter by its name and tries to convert it to a boolean.getPostString- gets the value of the POST parameter by its name and tries to convert it to a string.getPostArray- gets the value of the POST parameter by its name and checks that the value is an array.
First, you need to replace the request component in the configuration:
<?php
use MSpirkov\Yii2\Web\Request;
return [
...
'components' => [
'request' => [
'class' => Request::class,
...
],
...
],
];You also need to specify this class in __autocomplete.php so that the IDE knows which class to use:
<?php
use yii\BaseYii;
use yii\web\Application;
use MSpirkov\Yii2\Web\Request;
class Yii extends BaseYii
{
/** @var __Application */
public static $app;
}
/**
* @property-read Request $request
*/
class __Application extends Application {}I also recommend that you create your own basic controller and specify Request there:
use MSpirkov\Yii2\Web\Request;
/**
* @property Request $request
*/
class Controller extends \yii\web\Controller
{
public function init(): void
{
parent::init();
$this->request = Instance::ensure($this->request, Request::class);
}
}class ProductController extends Controller
{
public function actionDelete(): array
{
$this->response->format = Response::FORMAT_JSON;
return $this->service->delete($this->request->getPostInt('id'));
}
}A utility class for managing cookies.
This class encapsulates the logic for adding, removing, checking existence, and retrieving cookies, using the \yii\web\Request
and \yii\web\Response objects. It simplifies working with cookies by abstracting implementation details and providing more
convenient methods.
It contains the following methods:
has- checks if a cookie with the specified name exists.get- returns the cookie with the specified name.add- adds a cookie to the response.remove- removes a cookie.removeAll- removes all cookies.
class CookieManager extends \MSpirkov\Yii2\Web\CookieManager
{
public function __construct()
{
parent::__construct(
Instance::ensure('request', Request::class),
Instance::ensure('response', Response::class),
);
}
}class ExampleService
{
public function __construct(
private readonly CookieManager $cookieManager,
) {}
public function doSomething(): void
{
$this->cookieManager->add([
'name' => 'someCookieName',
'value' => 'someCookieValue',
]);
}
}