class PaymentType
{
private const CASH = 1;
private const NON_CASH = 2;
private int $type;
private function __construct(int $type)
{
$this->type = $type;
}
public static function cash(): self
{
return new self(self::CASH);
}
public static function nonCash(): self
{
return new self(self::NON_CASH);
}
public function isCash(): bool
{
return $this->type === self::CASH;
}
public function isNonCash(): bool
{
return $this->type === self::NON_CASH;
}
}
/**
* @param PaymentType::* $type
*/
public function isPaymentType($type) {
return $this->payment_type === $type;
}
PaymentType::validate($value)
. php artisan make:policy OrderPolicy
class OrderPolicy
{
use HandlesAuthorization;
public function update(User $user, Order $order)
{
if (!$user->isEmployee()) {
return false;
}
if ($user->id !== $order->user_id) { // остальной кусок ифа не понял - но он должен быть здесь.
return false;
}
return in_array($order->status, [Order::NEW, Order::WORK]);
}
}
class OrderUpdateRequest extends FormRequest
{
public function authorize()
{
return $this->user()->can('update', $this->order);
}
}
history
, можно использовать свойство length
. Если значение length
равно 1, то это означает, что в history
нет предыдущей страницы, и пользователь зашел по прямому URL.history
на пустоту:import { useHistory } from 'react-router-dom';
function MyComponent() {
const history = useHistory();
function goBack() {
if (history.length > 1) {
history.goBack();
} else {
// обработка случая, когда history пуста
// например, переход на главную страницу
history.push('/');
}
}
return (
<div>
<button onClick={goBack}>Назад</button>
</div>
);
}
length
свойство history
, и если оно больше 1, то вызывает goBack()
, чтобы вернуться на предыдущую страницу. Если length
равно 1, то пользователь зашел по прямому URL, и код выполняет альтернативное действие (в данном случае, переход на главную страницу) 'paid_back_at' => [
function (string $attribute, mixed $value, Closure $fail) {
if ($value !== null) {
$fail("The {$attribute} is invalid.");
}
},
],
https://laravel.com/docs/10.x/validation#using-closures Что это может быть?
И повлияет ли это на выдачу?
Есть ли способы борьбы с этим?
<div class="image-container">
<img src="image.jpg" alt="Image" onerror="this.src='https://komfort-pluss.ru/wp-content/uploads/2020/01/net-izobrazheniya.jpg'">
<img src="image1.jpg" alt="Image" onerror="this.src='https://komfort-pluss.ru/wp-content/uploads/2020/01/net-izobrazheniya.jpg'">
<img src="https://x-files.site/images/articles/96/1/7/sibsup_t3.jpg" alt="Image" onerror="this.src='https://komfort-pluss.ru/wp-content/uploads/2020/01/net-izobrazheniya.jpg'">
</div>
<style>
.image-container {
position: relative;
}
.image-container img {
width: 200px;
height: auto;
}
.image-container::before {
/* content: "Изображение не загрузилось"; */
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
color: #000;
font-size: 18px;
font-weight: bold;
text-align: center;
}
</style>