요청 데이터 설정 - CakePHP 4
P粉212971745
P粉212971745 2024-03-26 14:02:51
0
1
465

최신 CakePHP 4.x로 업데이트된 CakePHP 3.x 애플리케이션이 있습니다. 이 작업의 일환으로 우리는 PHP 7에서 PHP 8로 변경했습니다.

앱을 테스트하는 동안 기능이 작동하지 않는 것을 발견했습니다.

이 애플리케이션은 검색 가능한 데이터베이스이며 캐싱을 위해 Redis와 통합되어 있습니다. 기능 중 하나는 페이지를 다시 로드할 때마다 사용자 검색이 보존된다는 의미입니다. 이는 직렬화된 양식 데이터를 Redis에 작성한 다음 이를 템플릿의 input 필드에 다시 채워서 수행됩니다. 즉, 사용자는 페이지를 새로 고칠 때 검색어를 다시 입력할 필요 없이 자신이 입력한 검색어를 볼 수 있습니다.

inputCakePHP 3.x 애플리케이션에서

양식 필드를 다시 채우는 코드는 다음과 같습니다.

으아악 $form_fields 数组包含模板中 input$form_fields 배열에는 템플릿의

양식 이름이 포함됩니다. 예:

으아악 $user_search 是从 Redis 获取并反序列化的数据数组。例如,我们可能有 $user_search['f1']$user_search['f3'] 包含 Redis 数据; f2코드의 다음 부분은 양식을 다시 채웁니다. 이 경우 사용자가 해당 필드를 사용하여 검색하지 않았기 때문에

가 채워지지 않습니다.

으아악 Cake 3.x 애플리케이션에서는 위의 내용이 제대로 작동합니다. 페이지가 다시 로드되면 설정

요청 데이터의 결과로 양식 필드가 설정됩니다. 예를 들어 위 루프에서는 다음과 같이 평가됩니다.

으아악 f1,“bar”为 f3f2 中没有任何内容,因此根据 : '';이는 "foo"에 대해 요청된 데이터가

이고 조건이 이를 빈 문자열로 설정한다는 의미입니다.

CakePHP 4.x 애플리케이션에서는 페이지가 다시 로드될 때 모든 양식 필드가 채워지지 않습니다. 위에서 언급한 를 추가하고 "test" 문자열이 필드에 표시되지 않는지 확인하여 빈 문자열로 설정되지 않았음을 확인했습니다. : ''; 条件修改为 : 'test'; 데이터는 Redis에 존재하며,

에 위에 표시된 내용이 포함되어 있음을 확인했습니다. 즉, 데이터가 손실되지 않으므로 이를 배제했습니다. $user_search

https://book.cakephp.org/4/en/controllers/request-response.html을 읽어봐도

요청 데이터 설정 예가 표시되지 않습니다. 예상한 대로 수행하는 메서드 가 있습니다. 이 메서드는 요청된 데이터를 getData()읽는 것입니다.

위 코드가 작동할 수 있도록 Cake 4.x에서 요청 데이터를 설정하는 방법이 있나요?

일반 PHP에서 우리가 하는 일은

과 동일합니다. 으아악

내가 아는 한 이것은 PHP에서 작동하며 코드의 모든 항목을 사용하여 요청 데이터를 설정/재정의할 수 있습니다. 이것이 잘못된 경우 어떻게 해야 하는지 알려주세요.

명확하게 말하면 요청 데이터를 이렇게 설정한 이유는 검색이 Ajax 호출을 통해 이루어지기 때문입니다. 사용자가 처음 검색 기준을 입력하면 페이지가 아직 새로 로드되지 않았으므로 양식 필드가 올바르게 채워진 것으로 나타납니다. 이 문제는 페이지를 다시 로드할 때 발생합니다. 이 경우 페이지를 다시 로드하기 전에 입력한 값으로 양식을 다시 채우고 싶습니다.

P粉212971745
P粉212971745

모든 응답(1)
P粉722521204

당신이 찾고 있는 기능은 withData。请记住,请求对象是不可变的,因此您需要将该函数调用的结果分配回请求对象,例如与$this->setRequest($this->getRequest()->withData('f1', 'foo')->withData('f3', 'bar'))입니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿