国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Définition des données de demande - CakePHP 4
P粉212971745
P粉212971745 2024-03-26 14:02:51
0
1
756

Nous avons une application CakePHP 3.x que nous avons mise à jour vers la dernière version de CakePHP 4.x. Dans le cadre de ce travail, nous sommes également passés de PHP 7 à PHP 8.

Lors du test de l'application, nous avons remarqué qu'une fonctionnalité ne fonctionnait plus.

L'application est une base de données consultable et intégrée à Redis pour la mise en cache. L'une de ces fonctionnalités signifie que les recherches des utilisateurs sont préservées entre les rechargements de pages. Ceci est accompli en écrivant les données du formulaire sérialisé dans Redis, puis en les repeuplant dans le champ input du modèle. Cela signifie que les utilisateurs peuvent voir les termes de recherche qu'ils ont saisis?; ils n'ont pas besoin de les saisir à nouveau lorsque la page est actualisée.

Le code pour repeupler les input champs du formulaire dans l'application

CakePHP 3.x ressemble à ceci?:

$form_fields = ['f1', 'f2', 'f3'];
Le tableau $form_fields 數(shù)組包含模板中 input$form_fields contient les noms des

formulaires du modèle. Par exemple?:

<input type="text" name="f1">
$user_search 是從 Redis 獲取并反序列化的數(shù)據(jù)數(shù)組。例如,我們可能有 $user_search['f1']$user_search['f3'] 包含 Redis 數(shù)據(jù); f2La partie suivante du code remplit à nouveau le formulaire. Dans ce cas,

n'est pas renseigné car l'utilisateur n'a pas effectué de recherche à l'aide de ce champ.

foreach ($form_fields as $form_field) {
    $this->request->getData()[$form_field] = (isset($user_search[$form_field])) ? $user_search[$form_field] : '';
}
Dans les applications Cake 3.x, ce qui précède fonctionne très bien. Lorsque la page se recharge, les champs du formulaire sont définis à la suite de la demande de données set

, par exemple dans la boucle ci-dessus, il est évalué comme?:

$this->request->getData()['f1'] = 'foo';
$this->request->getData()['f3'] = 'bar';
f1,“bar”為 f3。 f2 中沒有任何內(nèi)容,因此根據(jù) : '';Cela signifie que les données demandées pour "foo" sont

et la condition la définit sur la cha?ne vide.

Dans une application CakePHP 4.x, cela ne fonctionne pas : ''; 條件修改為 : 'test'; lorsque la page se recharge, tous les champs du formulaire ne sont pas renseignés. J'ai confirmé qu'ils ne sont pas définis sur une cha?ne vide en ajoutant le mentionné ci-dessus et en m'assurant que la cha?ne "test" n'est pas affichée dans le champ.

$user_searchLes données existent dans Redis, et j'ai confirmé que

contient ce qui est affiché ci-dessus - en d'autres termes, les données ne sont pas perdues, nous avons donc exclu cela.

Quand je lis https://book.cakephp.org/4/en/controllers/request-response.html, je ne vois pas d'exemple de définition de getData()données de requête. Il existe une méthode qui fait ce que vous attendez : elle lit

les données demandées.

Existe-t-il un moyen de définir les données de la requête dans Cake 4.x afin que le code ci-dessus puisse fonctionner??

En PHP normal, ce que nous faisons équivaut à

$_POST['f1'] = 'foo';
$_POST['f2'] = ''; // empty string as no value set by user
$_POST['f3'] = 'bar';

Pour autant que je sache, cela fonctionnait et fonctionne toujours en PHP, vous pouvez définir/remplacer les données de la requête en utilisant n'importe quoi dans votre code ; Si c'est faux, dites-moi ce que je dois faire. ??

Pour plus de clarté, la raison pour laquelle nous configurons les données de la demande de cette fa?on est que la recherche est effectuée via un appel ajax. Lorsque l'utilisateur saisit initialement les critères de recherche, la page n'est pas encore rechargée, les champs du formulaire semblent donc être correctement renseignés. Ce problème se produit lors du rechargement de la page. Dans ce cas, nous souhaitons repeupler le formulaire avec les valeurs saisies avant de recharger la page.

P粉212971745
P粉212971745

répondre à tous(1)
P粉722521204

La fonction que vous recherchez est withData。請記住,請求對象是不可變的,因此您需要將該函數(shù)調(diào)用的結(jié)果分配回請求對象,例如與$this->setRequest($this->getRequest()->withData('f1', 'foo')->withData('f3', 'bar')).

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal