ok, mam rozwiązanie problemu.
ustawiłem primaryKey na inny klucz niz jest w bazie, przez to MSSQL głupiał ![]()
1 2011-11-30 13:20:29
Odp: CakePHP i MSSQL (1 odpowiedzi, napisanych Ogólne)
2 2011-11-30 12:59:44
Temat: CakePHP i MSSQL (1 odpowiedzi, napisanych Ogólne)
Witam,
mam problem z wstawianiem nowych rekordów do tabeli w MSSQL.
chce dodawać rekordy w pętli.
Jeden rekord jest dodawany, a następne lecą updatem po nim.
oczywiście nie zapomniałem wstawić
3 2011-11-22 14:24:12
Odp: Cake i Windows 1250 (1 odpowiedzi, napisanych Ogólne)
Jeśli w przeglądarce przełącze kodowanie z utf na windows 1250 to jest ok, ale po wczytaniu i tak jest UTF-8. nie ma znaczenia jaka wartość jest w:
<meta http-equiv="Content-type" content="text/html; charset=windows-1250">
pozdr.
4 2011-11-22 14:03:25
Temat: Cake i Windows 1250 (1 odpowiedzi, napisanych Ogólne)
Witam wszystkich,
mam problem z "krzakami"
CakePHP łączy się z bazą MSSQL, która jest kodowana w windows 1250, w Configure::write('App.encoding', 'utf-8'); nie da sie ustawic windows 1250 albo nie wiem jak.
Co zrobić zeby CakePHP prawidłowo pracował z windows 1250.
pozdr.
5 2009-09-22 09:57:56
Temat: Jak wyłączyć internacjonalizacje i lokalizacje (1 odpowiedzi, napisanych i18n, l10n)
Jak wyłączyć, żeby CakePHP nie próbował automatycznie zmieniać języka?
Mam aplikacje korzystającą z i18n, ale dane są wprowadzone tylko w języku polskim.
Nie chce, żeby jakiś np. anglik wszedł na stronę i nic mu się nie pokazało. Chcę żeby on też widział polską wersję.
pozdr.
6 2009-09-20 14:58:24
Odp: Obrazki w panelu admina i w na stronie (6 odpowiedzi, napisanych Ogólne)
tekst + obrazek w teksie - to jest wszystko w bazie. jesli dam polecenie php tam to chyba nie bedzie sparsowane?
7 2009-09-20 09:51:24
Odp: Obrazki w panelu admina i w na stronie (6 odpowiedzi, napisanych Ogólne)
nie rozumiem :-)
co da wyprintowanie $this->base ?
możesz podać więcej szczegółów?
pozdr.
8 2009-09-18 14:38:35
Temat: Obrazki w panelu admina i w na stronie (6 odpowiedzi, napisanych Ogólne)
Witam,
tworzę panel admina do mojej strony. W artykule można wstawić obrazek (do pola textarea mam WYSIWYG). Ścieżka dostępu prawidłowa żeby zdjęcie pojawiło się w tym wysiwyg musi zawierać nazwę katalogu ponieważ pracuję na localhost. Dajmy na to <img src="/cake/img/obrazek.jpg" />
Gdy przeniosę stronę na serwer to obrazki już się nie wyświetlą, ponieważ adres powinien być <img src="/img/obrazek.jpg" />
Czy ma ktoś jakiś pomysł jak to mądrze rozwiązać?
Może wyrażeniem regularnym szukać ciągu i zamieniać go na odpowiedni w controlerze w beforeRender ?
Może też np. stworzyć zmienną i np. w adminie pisać <img src="{img}/obrazek.jpg" /> i nastepnie zamieniać to {img}
Sam nie wiem...
pozdr.
9 2009-09-17 16:40:52
Temat: i18n i relacje z innymi modelami (0 odpowiedzi, napisanych i18n, l10n)
witam,
Mam dwa modele - Product oraz Science.
Product hasMany Science.
Zarówno model Product jak i model Science są tłumaczone przez i18n. Problem polega na tym, że gdy czytam dane produktu i mam ustawione recuresive np. na 1 lub więcej to w tablicy dostaję przetłumaczone dane Product z tabeli i18n, ale nieprzetlumaczone dane na sztywno wczytane z tabelki sciences.
tak wyglada controller
<?php
class ProductsController extends AppController {
var $name = 'Products';
var $helpers = array('Html', 'Form','FlvPlayer','Text');
//var $layout = 'products';
function index() {
$this->Product->recursive = 0;
$this->set('products', $this->paginate());
$this->layout = 'products';
}
function view($id = null) {
if (!$id) {
$this->Session->setFlash(__('Invalid Product.', true));
$this->redirect(array('action'=>'index'));
}
$this->set('product', $this->Product->read(null, $id));
$this->layout = 'products';
}
function science($id = null) {
if (!$id) {
$this->Session->setFlash(__('Invalid Product.', true));
$this->redirect(array('action'=>'index'));
}
$this->Product->recuresive = 1;
$this->set('product', $this->Product->read(null, $id));
$this->layout = 'products';
}dlaczego te dane nie są przetlumaczone?
Jeśli próbuję dostać się do danych bezpośrednio z controllera sciences tłumaczy jak należy.
pozdr.
10 2009-08-25 14:20:21
Temat: Nie mogę edytować rekordów (1 odpowiedzi, napisanych Ogólne)
witam,
mam dziwny problem ponieważ nie mogę edytować rekordu. Zamiast edycji, wstawia nowy, oparty na starym.
tak wyglada moj model
<?php
class Product extends AppModel {
var $name = 'Product';
var $validate = array(
'name' => array('notempty'),
'status' => array('numeric'),
);
var $order = array('Product.name ASC');
var $actsAs = array('Sluggable'=>array('label'=>'name','separator'=>'-','translation'=>'utf-8'),'Translate'=>array('name','description'));
//The Associations below have been created with all possible keys, those that are not needed can be removed
var $hasMany = array(
'Ad' => array(
'className' => 'Ad',
'foreignKey' => 'product_id',
'dependent' => false,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'exclusive' => '',
'finderQuery' => '',
'counterQuery' => ''
),
'Fact' => array(
'className' => 'Fact',
'foreignKey' => 'product_id',
'dependent' => false,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'exclusive' => '',
'finderQuery' => '',
'counterQuery' => ''
),
'Question' => array(
'className' => 'Question',
'foreignKey' => 'product_id',
'dependent' => false,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'exclusive' => '',
'finderQuery' => '',
'counterQuery' => ''
),
'Science' => array(
'className' => 'Science',
'foreignKey' => 'product_id',
'dependent' => false,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'exclusive' => '',
'finderQuery' => '',
'counterQuery' => ''
),
'Testimonial' => array(
'className' => 'Testimonial',
'foreignKey' => 'product_id',
'dependent' => false,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'exclusive' => '',
'finderQuery' => '',
'counterQuery' => ''
)
);
var $hasAndBelongsToMany = array(
'Category' => array(
'className' => 'Category',
'joinTable' => 'categories_products',
'foreignKey' => 'product_id',
'associationForeignKey' => 'category_id',
'unique' => true,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'finderQuery' => '',
'deleteQuery' => '',
'insertQuery' => ''
),
'Clip' => array(
'className' => 'Clip',
'joinTable' => 'clips_products',
'foreignKey' => 'product_id',
'associationForeignKey' => 'clip_id',
'unique' => true,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'finderQuery' => '',
'deleteQuery' => '',
'insertQuery' => ''
)
);
}
?>kontroler:
<?php
class ProductsController extends AppController {
var $name = 'Products';
var $helpers = array('Html', 'Form');
function index() {
$this->Product->recursive = 0;
$this->set('products', $this->paginate());
}
function view($id = null) {
if (!$id) {
$this->Session->setFlash(__('Invalid Product.', true));
$this->redirect(array('action'=>'index'));
}
$this->set('product', $this->Product->read(null, $id));
}
function admin_index() {
$this->Product->recursive = 0;
$this->set('products', $this->paginate());
}
function admin_view($id = null) {
if (!$id) {
$this->Session->setFlash(__('Invalid Product.', true));
$this->redirect(array('action'=>'index'));
}
$this->set('product', $this->Product->read(null, $id));
}
function admin_add() {
if (!empty($this->data)) {
$this->Product->create();
if ($this->Product->save($this->data)) {
$this->Session->setFlash(__('The Product has been saved', true));
$this->redirect(array('action'=>'index'));
} else {
$this->Session->setFlash(__('The Product could not be saved. Please, try again.', true));
}
}
$clips = $this->Product->Clip->find('list');
$this->set(compact('clips'));
}
function admin_edit($id = null) {
if (!$id && empty($this->data)) {
$this->Session->setFlash(__('Invalid Product', true));
$this->redirect(array('action'=>'index'));
}
if (!empty($this->data)) {
if ($this->Product->saveAll($this->data)) {
$this->Session->setFlash(__('The Product has been saved', true));
$this->redirect(array('action'=>'index'));
} else {
$this->Session->setFlash(__('The Product could not be saved. Please, try again.', true));
}
}
if (empty($this->data)) {
$this->data = $this->Product->read(null, $id);
}
$clips = $this->Product->Clip->find('list');
$this->set(compact('clips'));
}
function admin_delete($id = null) {
if (!$id) {
$this->Session->setFlash(__('Invalid id for Product', true));
$this->redirect(array('action'=>'index'));
}
if ($this->Product->del($id)) {
$this->Session->setFlash(__('Product deleted', true));
$this->redirect(array('action'=>'index'));
}
}
}
?>no i widok
<div class="products form">
<?php echo $form->create('Product');?>
<fieldset>
<legend><?php __('Edit Product');?></legend>
<?php
echo $form->input('name');
echo $form->input('description');
echo $form->input('images');
echo $form->input('flash');
echo $form->input('status');
echo $form->input('slug');
echo $form->input('date');
echo $form->input('Clip');
echo $form->input('Category');
?>
</fieldset>
<?php echo $form->end('Submit');?>
</div>
<div class="actions">
<ul>
<li><?php echo $html->link(__('Delete', true), array('action' => 'delete', $form->value('Product.id')), null, sprintf(__('Are you sure you want to delete # %s?', true), $form->value('Product.id'))); ?></li>
<li><?php echo $html->link(__('List Products', true), array('action' => 'index'));?></li>
</ul>
</div>czyli kod wyglada zupełnie standardowo, jednak w rekord nie jest aktualizowany tylko dodawany nowy. Czy ktoś ma jakis pomysł?
pozdr.
11 2009-08-07 12:58:34
Odp: Cannot modify header information (3 odpowiedzi, napisanych Ogólne)
ok, mam rozwiązanie.
Otworzyłem komponent swiftmailer w Notepad++
Następnie wykonałem polecenia:
Koduj w UTF-8 (bez BOM)
Rozwiązanie znalazłem w komentarzach tutaj:
http://www.justkez.com/cakephp-cannot-m … nformation
straciłem na taką drobnostkę 2 godziny - może komuś się przyda i zaoszczędzi komuś nerwów:)
12 2009-08-07 12:08:59
Temat: Cannot modify header information (3 odpowiedzi, napisanych Ogólne)
witam,
mam problem ze sławnym komunikatem: Cannot modify header information.
Problem pojawia się w momencie gdy chcę wysłać maila za pomocą SwiftMailer - problem o tyle ciekawy, że w jednym projekcie działa, a w drugim nie ![]()
Warning (2): Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\aplikacja\app\controllers\components\swift_mailer.php:1) [CORE\cake\libs\controller\controller.php, line 640]
Code | Context
$status = "Location: http://localhost/fagp/pages/form_ok"
header - [internal], line ??
Controller::header() - CORE\cake\libs\controller\controller.php, line 640
Controller::redirect() - CORE\cake\libs\controller\controller.php, line 621
ContactsController::add() - APP\controllers\contacts_controller.php, line 35
Object::dispatchMethod() - CORE\cake\libs\object.php, line 115
Dispatcher::_invoke() - CORE\cake\dispatcher.php, line 227
Dispatcher::dispatch() - CORE\cake\dispatcher.php, line 194
[main] - APP\webroot\index.php, line 88pierwsze linie kodu swiftmailer komponent to
<?php
// File -> app/controllers/components/swift_mailer.php
//http://bakery.cakephp.org/articles/view/updated-swiftmailer-4-xx-component-with-attachments-and-plugins
/**
* SwiftMailer 4.03 Component
*
* @author Matt Huggins
* @version 2.21
* @license MIT
* @category Components
* @modifiedby d3f_l3pp4rd
*/wiec nie ma nic co moze powodowac blad.
Korzystam z SwiftMailer w nastepujacy sposob
function add() {
if (!empty($this->data)) {
$this->Contact->create();
if ($this->Contact->save($this->data)) {
$this->Session->setFlash(__('The Contact has been saved', true));
$this->contact($this->data);
$this->redirect(array('controller'=>'pages','action'=>'form_ok'));
}
else {
$this->Session->setFlash(__('The Contact could not be saved. Please, try again.', true));
}
}
}funkcja $this->contact();
$this->SwiftMailer->smtpHost = 'tutaj jest host;
// $this->SwiftMailer->smtpPort = 465;
$this->SwiftMailer->smtpUsername = 'login';
$this->SwiftMailer->smtpPassword = 'haslo';
$this->SwiftMailer->sendAs = 'html';
$this->SwiftMailer->from = 'adres_email_smtpl';
$this->SwiftMailer->fromName = 'Automat';
$this->SwiftMailer->to = 'tutaj to wysylaml';
$this->set('message', $data);
try {
if(!$this->SwiftMailer->send('kontakt', 'Kontakt ze strony xxx')) {
foreach($this->SwiftMailer->postErrors as $failed_send_to) {
$this->log("Failed to send email to: $failed_send_to");
}
}
}
catch(Exception $e) {
$this->log("Failed to send email: ".$e->getMessage());
}
$this->autoRender = false;
} szablon wiadomości kontakt.ctp wyglada tak
<p><?php __('Name'); ?>: <?php echo $message['Contact']['name'] ?></p>
<p><?php __('Email'); ?>: <?php echo $html->link($message['Contact']['email'],'mailto:'.$message['Contact']['email']) ?></p>
<p><?php __('Subject'); ?>: <?php echo $message['Contact']['subject'] ?></p>
<p><?php __('Message'); ?>: <?php echo $message['Contact']['message'] ?></p>oczywiście sprawdziłem i nigdzie nie ma zadnych znaków po "?>"
ma ktoś może pomysł gdzie leży przyczyna?
13 2009-08-05 08:45:50
Odp: Dostęp do funkcji w kontrolerze głównym (14 odpowiedzi, napisanych Ogólne)
$this->international_paranoid($gallery['name']);Fatal error: Call to undefined method View::international_paranoid() in C:\xampp\htdocs\cake\app\views\shows\clip_detail.ctp on line 21
14 2009-08-04 11:40:56
Odp: Dostęp do funkcji w kontrolerze głównym (14 odpowiedzi, napisanych Ogólne)
w widoku teraz to jedynie sprawdzam jakby to wygladalo.
robal77 - jakbys to rozwiazal.
czytam sobie dane przez find nastepnie petla przez ta tablice dodaje dynamicznie pole url w ktorym jest zamieniona wartosc z name przez inflector::slug?
pozdr.
15 2009-08-03 15:36:03
Odp: Dostęp do funkcji w kontrolerze głównym (14 odpowiedzi, napisanych Ogólne)
funkcja ta wyglada tak
function international_paranoid($string, $allowed = array()) {
$allow = null;
if (!empty($allowed)) {
foreach ($allowed as $value) {
$allow .= "\\$value";
}
}
if (is_array($string)) {
foreach ($string as $key => $clean) {
$cleaned[$key] = preg_replace("/[^{$allow}\p{L}0-9]/u", '', $clean);
}
} else {
$cleaned = preg_replace("/[^{$allow}\p{L}0-9]/u", '', $string);
}
return $cleaned;
}generlanie wykorzystalbym Inflector:slug, ale "psuje" mi polskie znaki. robi cos takiego "m�-�czyzn.html" zamiast "mezczyzn.html"
16 2009-08-03 14:40:18
Temat: Dostęp do funkcji w kontrolerze głównym (14 odpowiedzi, napisanych Ogólne)
witam,
mam pewien banalny problem.
nie wiem w jaki sposób dostać się w widoku lub kontrolerze do funkcji znajdującej się w app_controller.php
Próbowałem metodą prób i błędów
$this->nazwa_funkcji();
Controller->nazwa_funkcji();
parent::nazwa_funkcji();
Controller::nazwa_funkcji();zadne nie dziala. jak wywołać tą funkcję?
pozdr.
17 2009-08-01 18:43:53
Odp: Przetwarzanie danych (7 odpowiedzi, napisanych i18n, l10n)
ok, mój problem spowodowany był błędem na stronie CakePHP, a w zasadzie drobną różnicą.
wg. API powinno być:
bindTranslation( $model, $fields, $reset = true )tymczasem u mnie dziala tak:
bindTranslation($fields, $reset)18 2009-08-01 18:25:17
Odp: Przetwarzanie danych (7 odpowiedzi, napisanych i18n, l10n)
nie w tym rzecz.
problem lezy w tym, ze odczytuje tylko nazwe.
[field] => name
[content] => nazwa produktu po polskubrakuje description i url.
teraz zapytanie dla tabeli i28n wyglada tak
SELECT `ProductsDescriptions`.`id`, `ProductsDescriptions`.`locale`, `ProductsDescriptions`.`model`, `ProductsDescriptions`.`foreign_key`, `ProductsDescriptions`.`field`, `ProductsDescriptions`.`content` FROM `mayer_i18n` AS `ProductsDescriptions` WHERE `model` = 'Product' AND `field` = 'name' AND `ProductsDescriptions`.`foreign_key` = (22)nie potrzebne jest to `field` = 'name'
19 2009-08-01 17:15:45
Odp: Przetwarzanie danych (7 odpowiedzi, napisanych i18n, l10n)
Spójrz na tablice Product.
Behavior automatycznie wyciaga dane wg. aktualnego jezyka do pól name, description, url.
Problem w tym, że ja chcę na raz edytować wszystkie 3 języki.
20 2009-08-01 17:01:11
Odp: Przetwarzanie danych (7 odpowiedzi, napisanych i18n, l10n)
nie rozumiem. możesz rozwinąć pytanie?
21 2009-07-29 21:57:18
Temat: Przetwarzanie danych (7 odpowiedzi, napisanych i18n, l10n)
witam,
korzystam z i18n do tlumaczenia zawartosci bazy.
Problem pojawił się przy edycji bo nie wiem jak to mogę zedytować.
Do i18n przesyłam name, description oraz url - i te wartosc sa zapisywane.
Jednak gdy chce odczytać dane to nie mam tego description oraz url (oczywiście w bazie sa)
Robię wg. tego przykładu:
http://book.cakephp.org/pl/view/797/Ret … or-a-field
$this->Product->bindTranslation(array ('name' => 'ProductsDescriptions'));i to co zwraca mi $this->data wyglada tak
[Product] => Array
(
[id] => 1
[image] => jkh
[date] => 2009-07-29
[locale] => pol
[description] => opis po polsku
[url] => urllllll
[name] => nazwa produktu po polsku
)
[ProductsDescriptions] => Array
(
[0] => Array
(
[id] => 1
[locale] => pol
[model] => Product
[foreign_key] => 1
[field] => name
[content] => nazwa produktu po polsku
)
[1] => Array
(
[id] => 4
[locale] => eng
[model] => Product
[foreign_key] => 1
[field] => name
[content] => nazwa po angielsku
)
[2] => Array
(
[id] => 7
[locale] => rus
[model] => Product
[foreign_key] => 1
[field] => name
[content] => nazwa po rusku
)
)Jak mam wyciągnąć description i opis skoro 3 razy by byla wartosc field oraz content?
Jeśli ktoś ma jakiś pomysł - proszę o odpowiedź.
pozdr.
22 2009-07-29 17:03:21
Odp: Zmiana urli (5 odpowiedzi, napisanych Ogólne)
przepraszam,
już daje linka.
funkcję wziąłem z dokumentacji Cake
23 2009-07-29 16:39:48
Odp: Zmiana urli (5 odpowiedzi, napisanych Ogólne)
jestem dosyć słaby z angielskiego, więc mam pytanie.
do czego służy
Router::connectNamed(false, array('default' => true)); i dziala tak jak chce.
http://localhost/cake/products/view/1,jkhjkh.html
- zupelnie ignoruje to ",jkhjkh.html". nie wiem czy to poprawne, ale dziala tak jak chcialem. jeszcze nie wiem co z paginacja, ale pomysle pozniej.
czy to dobre rozwiazanie?
pozdr.
24 2009-07-29 16:00:46
Temat: Zmiana urli (5 odpowiedzi, napisanych Ogólne)
witam,
chciałbym tworzyc linki w postaci np. www.adres.pl/projects/art161,ciekawa-realizacja.html
czyli chciałbym, żeby wszystko działało tak jak dziala do tej pory w cake. mam kontroler np. project w nim akcje view.
daje tak www.adres.pl/projects/art161,ciekawa-realizacja.html to chce wybrac rekord z bazy o id 161.
słówko art jest nie istotne, podobnie wartosc po przecinku. wystarczy zwykla zabawa z routerem?
pozdr.
25 2009-07-24 14:19:30
Odp: e-commerce z wykorzytsaniem cakephp (6 odpowiedzi, napisanych Wasze projekty)
pochwal sie co juz zrobiles.
cos tam moze moglbym pomoc