나는 다국어 게시물을 작업 중입니다. 나는 그래서 내가 기능을 다음과 쓴 사용자가 다른 언어로 게시물을 복제 할 수 있도록하기 위해 현재 언어Cakephp 3 : 특정 쿼리에 대한 beforefind를 무시하는 방법?
public function beforeFind(Event $event, Query $query) {
$query->where(['Posts.locale' => I18n::locale()]);
}
에 대한 게시물을 나열 할 수 있습니다 PostsTable에 beforefind()를 추가 한 :
public function duplicate(){
$this->autoRender = false;
$post_id= $this->request->data['post_id'];
$post = $this->Posts
->findById($post_id)
->select(['website_id', 'category_id', 'locale', 'title', 'slug', 'body', 'image', 'thumb', 'meta_title', 'meta_description', 'other_meta_tags', 'status'])
->first()
->toArray();
foreach($this->request->data['site'] as $site) {
if($site['name'] == false) {
continue;
}
$data = array_merge($post, [
'website_id' => $site['website_id'],
'locale' => $site['locale'],
'status' => 'Draft',
'duplicate' => true
]);
$pageData = $this->Posts->newEntity($data);
if($this->Posts->save($pageData)) {
$this->Flash->success(__('Post have been created.'));;
} else{
$this->Flash->error(__('Post is not created.'));
}
}
return $this->redirect(['action' => 'edit', $post_id]);
}
확인하기 위해서 게시물이 이미 복제 된 경우
$languages = TableRegistry::get('Websites')->find('languages');
foreach($languages as $language)
{
$exists[] = $this->Posts
->findByTitleAndWebsiteId($post['title'], $language['website_id'])
->select(['locale', 'title', 'website_id'])
->first();
}
$this->set('exists',$exists);
을하지만 beforefind로()는 위의 질의에 쿼리를 추가한다 : 나는 '편집'functino에 체크를하고있는 중이 야. 나는 결과를 얻지 못하고있다. 내가 cerrtain 쿼리에 대해 beforefind()를 무시할 수있는 방법이 있습니까? 나는 아래 엔티티를 사용해 보았습니다 :
public function beforeFind(Event $event, Query $query) {
if(isset($entity->duplicate)) {
return true;
}
$query->where(['Posts.locale' => I18n::locale()]);
}
행운은 없습니다. 아무도 나를 안내 할 수 있을까요? 읽어 주셔서 감사합니다. $options
인수가 :
감사합니다. 감사합니다. 도움이되었습니다. – Invincible