Lxf138 cakephp

CakePHP. Раз - і web-прі-ло-же-ня!

Хо-ти-ті ство-дати на-деж-ве web-прі-ло-же-ня, але не-ко-ли по-зить-ся з PHP. Грем Уел-дон вва-та-ет, що CakePHP - то, що вам нуж-но.

Lxf138 cakephp
Введення-ва стра-ні-ца CakePHP так-ет сла-бої перед-ставши-ле-ня про його мо-щі - вни-кай-ті глиб-же!

На-ча-лось. У вас все-го 15 мі-нут, а нуж-но ство-дати ка-та-лог ог-ром-ної кол-лек-ції філь-мов. Хто при-дет на по-міць? Конеч-но, CakePHP. CakePHP - кар-кас для б-ст-рій раз-ра-бот-ки при-ло-жений, ох-ва-ти-ваю-щий все стан-дарт-ні ве-щі, зустрів чаю-щие-ся в web-про-грам-мі-ро-вання. Ре-шення по-дру-ряю-чих-ся за-дач ви-сво-бо-дит вам біль-ше ча-мени на ко-фе, голок-ри і про-че. На цьому введення-ном уро-ке ми ство-да-дим біб-ліо-ті-ку муль-ти-ме-діа, де бу-дет зберігати-ся ін-фор-ма-ція про ва-ших філь-мах .

Для пра-цю-ти CakePHP нуж-но со-всім немно-го. Як і на-до-біт-ся web-сер-вер ти-па Apache, PHP 4 + (промінь-ше 5 +), MySQL 4+ і тек-сто-вий ре-дак-тор на ваш ви-бор. На мо-мент напи-сания ста-тьі по-останньої вер-си-їй CakePHP б-ла 1.3.

Як і сле за-вантаж-ки ар-хі-ва з сай-ту або з ре-по-зи-то-рія ско-пі-руй-ті со-дер-жи-моє па-ке-та cakephp в DocumentRoot web-сер-ве-ра. У вас дол-дружин співаючи-вить-ся ка-та-лог / directory. со-дер-жа-щий під-ка-та-ло-гі / app, / cake, / plugins і / vendors і фай-ли .htaccess, index.php і README.

На-буд-ка ба-зи дан-них

Для по-ви-ше-ня б-ст-ро-дей-ст вія CakePHP за-пі-си-ва-ет фай-ли ке-ша і дру-Гії ме-ло-чи в ка-та-лог app / tmp. Нуж-но переконатися-дить-ся, що у поль-зо-ва-ті-ля, під ко-то-рим за-пу-щен web-сер-вер, є пра-во на за-пись в цей ка- та-лог. Б-ст-реї все-го раз-ре-шити за-пись всім ко-ман-дою: chmod -R 777 app / tmp

Сле-дую-щий крок - на-буд-ка ба-зи дан-них. Восполь-зу-ем-ся MySQL. так як це са-травня по-пу-ляр-ва з сво-бод-них СУБД, і для на-ше-го при-ло-вання ство-да-дим сле-дую-щую ба-зу дан-них:

Конеч-но, це все-го лише таб-ли-ца, але для зберігання ін-фор-ма-ції і пра-цю-ти при-ло-вання її доста точ-но.

Об-ра-ті-ті увагу, що для іден-ти-фі-ка-то-ра ка-ж-дою запи-сі ис-поль-зу-ет-ся по-ле ти-па CHAR (36). CakePHP за-ме-ча-ет це, і при до-бав-лення но-вих запи-сей ав-то-ма-ти-че-скі генерітся-ру-ет їм унікальних-ний універ-саль-ний іден- ти-фі-ка-тор UUID вме-сто чи-сло-во-го зна-чення. Це по-лез-ва при-вич-ка, оскільки вона уп-гай-ет далекої-шиї злиття дан-них з раз-лич-них баз. Та-ков один з під-хо-дів CakePHP. осно-ван-ний на со-гла-шениях і від-ра-жаю-щий прин-цип раз-ра-бот-ки при-ло-жений в CakePHP. «Со-гла-шення важливіше кон-фі-гу-ра-ції».

Ще один при-заходів дан-но-го під-хо-да за-ме-тен в по-лях created і modified. Чи не нуж-но пі-описати ника-ко-го ко-да, что-б по-ле created за-пол-ня-лось те-ку-щі-ми так-тій і ча-іменем при ство-Данії запи- сі. Для за-нання вто-ро-го по-ля де-лать то-же нічо-го НЕ нуж-но. CakePHP візь-мет все в свої ру-ки і по-за-бо-тит-ся про це сам, зна-чи-тель-но уско-рів раз-ра-бот-ку при-ло-вання і уп-ро -Стівен його.

Так як для на-звань філь-мов ми ви-бра-ли по-ле title. що со-від-вет-ству-ет од-но-му з з-вест-них CakePHP «стандартно-ча-тель-них» за-го-лов-ков ко-ло-нок, ми уви-дим ще немно -го віл-Шеб-ства - CakePHP ав-то-ма-ти-че-скі візьме на-звання всіх запи-сей (при со-ставши-лення спи-сков і так-леї в та-кому ду-хе) імен-но з це-го стовп-ца.

Пе-ред пе-ре-хо-дом до сле-дую-ще-му ша-гу ство-дай-ті таб-ли-цу.

Уста-нів-ка з-єднання з БД

На-буд-ка ба-зи дан-них в CakePHP про-ста. Є файл /app/config/database.php.default - це при-заходів фай-ла кон-фі-гу-ра-ції БД. Про-ще все-го ско-пі-ро-вать цей файл в /app/config/database.php. В ство-дан-ної ко-ПІІ через меніте па-ра-мет-ри дост-па до ба-зе дан-них. Для на-ше-го при-ло-вання нуж-но на-будів-ить толь-ко з-єднання $ default. Це долж-но ви-гля-діти при-мер-но так:

Те-пер мож-но -гру-зить сторінку при-вет-наслідком CakePHP. від-відчинивши в Брау-зе-ре ад-рес, по ко-то-ро-му рас-по-ло-дружин сер-вер. Ви уві-ді-ті зе-ле-ні ін-ді-ка-то-ри, оз-на-чаю-щие успішний-ву уста-нов-ку CakePHP. Ес-ли в на-буд-ках щось не так, ін-ді-ка-то-ри бу-дуть заліз-ти-ми, і співаючи-вит-ся під-роб-ний-про-щення про ошиб-ке, до то рої по-мо-же ре-шити про-бле-му. Для на-ше-го при-ло-вання мож-но голок-но-ри-ро-вать все со-про-щення про за-тра-валь-ном зна-чении [Security Salt] або пре-ду-пре -ж-дення про клю-че Шиф-ро-вання [Cipher Key] - йому це-го нема на-до.

Візь-мем-ся за код все-р-ез, ство-давши клас MoviesController в /app/controllers/movies_controller.php.

Для об-ра-бот-ки со-про-ще-ний про ошиб-ках ми вклю-чи-чи когось по-нент Session.

Од-но за дру-гим ство-да-дим дей-наслідком, що надаються поль-зо-ва-ті-лям, про-гля-ри-ваю-щим ба-зу дан-них філь-мов. Дей-наслідком - це пуб-лич-но до-ступ-ні функ-ції кон-трол-ле-ра. Для всіх опе-ра-цій, ви-пол-няе-михнад філь-мом в ба-зе дан-них, ство-да-дим в кон-трол-ле-ре дей-наслідком типу CRUD. CRUD - це со-кра-щення від Create, Read, Update і Delete [Соз-дати, Про-чи-тать, Об-но-вить і Уда-лити]. На-ши дей-наслідком по-лу-чат на-звання index, add, edit, view і delete.

Почнемо з дей-наслідком index - ви-по-д спи-ска всіх філь-мов в ба-зе дан-них. У кон-тро-ле-ре є об'єк-ект сущ-но-сті Movie; він пред-став-ля-ет з-бій мо-дель. Він ав-то-ма-ти-че-скі вклю-ча ет ся CakePHP і со-від-вет-ству-ет імені кон-трол-ле-ра. Мо-жер ви-кликати find () в цій мо-де-ли, і CakePHP пре-про-ра-зу-ет ці ви-зо-ви в за-про-се до ба-зе дан-них - нам не при-дет-ся пи-описати SQL-за-прос вруч-ву. Як і тря-саю взагалі круто! Нижче ми ви-зи-ва-му ме-тод find () з ар-гу-мен-том all і запи-си-ва-ням ре-зуль-тат в перед- ставши-ня для по-сле-дую- ще-го ото-бра-вання.

Ось і все, що нуж-но для дей-наслідком index. Розумію, що ви-гля-дит це бе-зи-скусним, але в тому-то і пре-лестощі CakePHP - неза-ніж всі усклад-ти.

Ство-да-му пров-ше пред-став-лення

Дей-ствие го-то-во - ство-дамо пред-став-лення, що-б мож-но б-ло про-гля-ри-вать дан-ні та пра-цю-ва-ти з ними. Пред-ставши-лення в CakePHP - про-стие PHP -фай-ли з рас-ши-ренієм ctp. Вони напи-са-ни на зви-ном PHP.

Ство-дай-ті своє пер-ше пред-став-лення в фай-ле /app/views/mov-ies/index.ctp. Сну-ча-ла ство-дайте ка-та-лог movies в / app / views. До-бавь-ті ту-да код з фраг-мен-ту 1 на LXFDVD.

Пред-ставши-ня ите-ри-ру-ет пе-ре-мен-ву $ movies. уста-нов-лен-ву раніше кон-трол-ле-ром MoviesController. і ви-по-дит все запи-сі в таб-ли-це (в кон-це кон-цов, це таб-лич-ні дан-ні).

На дан-ний мо-мент філь-мов в ба-зе немає. Сроч-но ство-да-дим функ-ціо-нал для їх до-бав-лення: ча-ма-то йде!

Ство-ня дей-наслідком add і про-огляд

Те-пер рас-ши-рим наш кон-трол-лер, до-ба-вів в нього функ-цію add. З її по-мо-гою но-ші філь-ми бу-дуть до-бав-лять-ся в ба-зу дан-них. Нуж-но про-ве-рить, б-ли чи вве-де-ни в фор-му ка-кі-то дан-ні, та ес-ли так, про-ве-рить її на на-ли-ність оши -бок і про-пра-цю-ва-ти. Це ка-жет-ся складність ним, але CakePHP об-ліг-ча-ет ре-шення дан-ної за-да-чи. З-від-вет-ству-щий фраг-мент ко-да мож-но уви-діти в Лістін-ге 2 на LXFDVD.

Пред-ставши-ня для до-бав-лення філь-мов ис-поль-зу-ет вспо-мо-га-тель-ний клас форм CakePHP. по-зво-ляю-щий ліг-ко ство-да-вати фор-ми на все слу-чаї життя. Тут ми про-сто оп-ре-де-ля-му, для ка-кой мо-де-ли ство-да-ет-ся фор-ма (в дан-ном слу-чаї, мо-дель Movie) і ка -кіе по-ля ми пре-доста-вим поль-зо-ва-ті-лям.

Ство-дай-ті файл /app/views/movies/add.ctp і по-помсти-ті ту-да сле-дую-щий код:

Са-мо ство-ня фор-ми про-ис-хо-дить в пер-вих трьох будів-ках фай-ла. Все осталь-ве - HTML-код для рас-по-ло-вання еле-мен-тів на сторінці і генера-ції посиланн-ки для воз-вра-та до спи-ску філь-мов.

Те-пер мож-но пе-рей-ти до фор-ме ство-данія філь-мов, від-відчинивши ад-рес / movies / add або клац-нув по си лан-ке «New Movie». ко-то-рую ми до-ба-ві-ли на глав-ву сторінку.

Lxf138 cakephp
Додавання фільму з дією Add Так, це просто, але вся пре-лестощі в малому обсязі необхідного коду

Бле-стя-ще! Але мож-но співай-ти даль-ше і до-ба-вить па-ру філь-мов. В при-ме-ре на сле-дую-щем ек-ран-ном сним-ке ми до-бав-ля-ем ін-фор-ма-цію про філь-ме «Че-ло-вік-па-ук 3 »в фор-ма-ті Blu-ray. Як і до слід-бав-лення ін-фор-ма-ції про оче-ред-ном філь-ме ви пе-ре-на-прав-ляе-тесь на глав-ву сторінку, де в спи-ську філь-мов по-яв-ля-ет-ся но-вая запис.

Уда-ля-му філь-ми

Ви міг-ли до-ба-вить фільм, ко-то-ро-го у вас біль-ше немає, або по ка-ким-то дру-ги-ми при-чи-нам ре-шити уда-лити запис з бази даних. Ми вже ство-да-ли в перед- ставши-домлення посиланн-ки на дей-ствие уда-лення, по-це-му реа-лі-зу-му його. Це-му дей-ствию НЕ нуж-но пред-став-лення, так як при уда-лення Не ну-дружин ви-вод ника-кою ін-фор-ма-ції. Дей-ствие об-ра-бо-та-ет уда-ня, і за-тим ви сра-зу бу-де-ті пе-ре-на-прав-ле-ни на глав-ву сторінку з со-від- вет-ству-щим з-об-щением.

До-бавь-ті дей-ст-віє уда-ле-ня в кон-трол-лер Movies.

За-лу-чи-ті справ-ку в се-ти

До-пол-ні-тель-ва ін-фор-ма-ція і ру-ко-во-д-ства по CakePHP дос-туп-ни че-рез офі-ци-аль-ву мережу його під-держ-ки . Ми по-пи-та-лись по-до-б-рать са-мі по-лез-ні:

До-бав-ле-ня філь-ма з дей-ст-ві-му Add. Так, це про-сто, але вся пре-лестощі в ма-лом об'єк-е-ме тре-буї-мо-го ко-да.

Ре-дак-ти-ру-му дан-ні

Так-же промінь-шим з промінь-ших слу-ча ет ся оши-бити-ся, і хо-ро-шо б мати дей-ствие для ре-дак-ти-ро-вання дан-них, щось б при необ-хо-ді-мо-сти ис-прав-лять ошиб-ки або вно-сить в запи-сі зміни. Це дей-ствие дуже по-хо-же на дей-ствие до-бав-лення; основ-ве від-ли-ність в тому, що пра-цю-та про-з-під-дит-ся з ID су-ще-ству-щей запи-сі. На са-мом де-ле вони на-настільки-ко по-хо-жи, що досвід-ні раз-ра-бот-чи-ки CakePHP об'єк-е-ді-ня-ють дей-наслідком add і edit в од -во. Для еко-но-ми Академії місця код винесено на LXFDVD в Лістинг 3; до-бавь-ті його в свій кон-трол-лер.

Основ-ні раз-ли-чия ме-ж-ду дей-наслідком-ми add і edit в тому, що дей-ствию ре-дак-ти-ро-вання пе-ре-да-ет-ся іден-ти- фі-ка-тор запи-сі та в ньому не ви-зи-ва-ет-ся ме-тод create () об'єк-ек-ту Movie. по тій при-чині, що при со-зберіганні в ба-зе долж-ни уце-леть все маю щие-ся в запи-сі поля.

Пред-ставши-ня для ре-дак-ти-ро-вання

За-ка все долж-но ви-гля-діти зна-ко-мим. Пред-ставши-ня edit. ко-то-рої ми на-ме-ре-ни ство-дати, поч-ти іден-тич-но фор-ме до-бав-лення add. Як і вто-рюсь, раз-ра-бот-чи-ки, ка-де-не-то ча-ма про-пра-цю-тав-шие з CakePHP. об'єк-е-ді-ня-ють add і edit в од-но пред-став-лення, що-б не б-ло по-дру-рів ко-да. Єдін-ного-ве від-ли-ність з-сто-ит в по-яв-лення в фор-ме вхід-но-го па-ра-мет-ра id і кноп-ки для від-прав-ки фор ми.

Ство-дай-ті файл /app/views/movies/edit.ctp і по-помсти-ті ту-да сле-дую-щий код:

З-збе-ним пред-став-ле-ня

За-ра про-ве-рить, як все пра-цю-та-ет. Як і пре-ж-де, від-крій-ті в Брау-зе-ре глав-ву сторінку і пе-рей-ді-ті на сторінку ре-дак-ти-ро-вання дан-них для од-но го з ва-ших філь-мов. На ек-рані співаючи-лять-ся все по-ля вво-да для запи-сі. Об-ра-ті-ті увагу, що по-ле id НЕ ото-бра-жа-ет-ся. Це прихованої-тое по-ле фор-ми, і поль-зо-ва-вець не мо-же пра-цю-ва-ти з цим-ми дан-ни-ми. На-ше по-останньої дей-ствие і пред-став-лення ви-ве-дуть під-роб-ву ін-фор-ма-цію про ка-ж-будинок філь-ме, по-ка-зав все дан ні, чи не ото-бра-жае-мі на глав-ної сторінці, та-кі як ча-ма ство-данія і через трансформаційних змін запи-сі.

Коли ви від-кри-ває-ті в Брау-зе-ре дей-ствие про-смот-ра, йому пе-ре-да-ет-ся іден-ти-фі-ка-тор в URL-ад-ре- се, що-б ми зна-ли, ін-фор-ма-цію про ка-ком філь-ме нуж-но по-ка-мовити.

До-бавь-ті та-де дей-ст-віє про-смот-ра в кон-трол-лер Movies.

Lxf138 cakephp
Про-огляд під-роб-ної ін-фор-ма-ції про філь-ме.

Ство-да-му під-роб-ве пред-став-ле-ня

На-ше по-останньої перед-ставши-ня - про-сто таб-ли-ца з усією име-ющейся ін-фор-ма-ци-їй про філь-ме. Ство-дай-ті це перед- ставши-ня в фай-ле /app/views/movies/view.ctp - код при-ве-ден в Лістін-ге 4 на LXFDVD.

Як і следние дей-ствие, на ко-то-рої ми со-сла-лись з глав-ної стра-ниці, ті-перь пра-цю-та-ет! Клацніть по си лан-ке «view» ря-будинок з одним з філь-мов - ви уві-ді-ті ре-зуль-тат пра-цю-ти толь-ко що ство-дан-но-го пред-став-лення . Об-ра-ті-ті увагу, що ви-по-дит-ся так-же зруч-ний спи-сок під-хо-дя щих дей-тей для ті-ку-щей запи-сі.

Ес-ли через нити запис або ство-дати но-ву, CakePHP об-но-вит по-ля зі вре-іменем ство-данія і через трансформаційних змін. Це частина ав-то-ма-ти чого ско-го функ-ціо-на-ла, пре-діставши-ляе-мо-го кар-ка-сом. От-ре-дак-ти-руй-ті па-ру запи-сей, що-б по-смот реть, як ме-ня-ють-ся їх по-ля.

Що далі?

Схожі статті