2015-11-18 3 views
0

Я просто пытаюсь проверить, существует ли изображение или нет, я могу сделать это с помощью PHP. Например: -CakePHP 3: Как проверить, существует ли файл или изображение

$file = WWW_ROOT .'uploads' . DS . 'employee' . DS .'_'.check.jpg; 

$file_exists = file_exists($file); 

Это прекрасно работает для меня. Но я попытался также попытался использовать elementExists как это: -

if($this->elementExists("../".$employees->front_image)) 
{ 
    echo $this->Html->image("../".$employees->front_image); // image output fine without condition. 
} 

// Here $employees->front_image = uploads/employee/employeename.jpg 

Эта проверка не работает. Как я могу сделать это в CakePHP?

ответ

0

CakePHP написан на PHP, поэтому, если у вас уже есть простое решение, например file_exists(), используйте это. Таким образом, вы можете написать что-то вроде этого: -

if (file_exists(WWW_ROOT . $employees->front_image)): 
    echo $this->Html->image('../' . $employees->front_image); 
endif; 

elementExists() предназначен для проверки, что View элемент существует, нет, если файлы существуют в корневой директории, поэтому не следует использовать, как вы пытаетесь. Он выполняет проверку file_exists(), но это проверяет все доступные только пути к элементам списка.

+0

Я могу решить его с помощью file_exists(). У моего вопроса есть какой-либо метод в cakephp, чтобы сделать то же самое? –

+0

Не об этом я знаю. То, что вы пытаетесь сделать, это действительно простая проверка, и любые альтернативные методы, предоставленные CakePHP, скорее всего, будут излишними, поскольку вы просто вызываете функцию-обертку, которая в конце будет вызывать 'file_exists()'. Если вы посмотрите на код для 'elementExists()', вы увидите, что Cake использует 'file_exists()' сам для проверки файла. Вы, по-видимому, точно знаете, в какой директории будет создан ваш файл изображения, если он присутствует, поэтому лучшим решением (и лучше всего для производительности) будет прямой вызов 'file_exists()'. – drmonkeyninja

+0

ОК, я понимаю. –

1

Я думаю, что это работает в торт 3 (вы должны сделать это в afterFind метод ИМО):

// Create a new file with 0644 permissions 
$file = new File('/path/to/file.php', true, 0644); 

if ($file->exists()) { 
    //do something 
} 

$file->close(); 

Ваш путь проверяет, существует ли элемент представления или нет.

Смежные вопросы