Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony] 1.4 jobeet - search zwraca zawsze pusty wynik
Forum PHP.pl > Forum > PHP > Frameworki
Valantir
Witam,
Robię właśnie dzień 17 z tutorialu jobeet i natknąłem się na problem, którego nie potrafię rozwiązać... Otóż podczas wyszukiwania wyników, nie ważne co wpiszę, zawsze dostaję pusty wynik. Nie wiem czy jest to może tym spowodowane, ale w tutku pisze, że mam skopiować takie pliki/katalogi:
Exception.php
Loader/
Autoloader.php
Search/

Niestety u mnie są tylko takie:
Loader/
Search/
Exception.php
Loader.php

Najgorsze jest w tym to, że nie dostaję żadnego błędu, że coś jest nie tak (może pomogłoby w poprawieniu błędu).
Nadmienię tylko, że zapytania jakie się wyświetlają to:
Cytat
SET NAMES 'utf8'
time: 0.001 sec, slow: NO, mem: 7.8 MB, mempeak: 7.8 MB, memdelta: 0.0 B

SELECT jobeet_job.ID, jobeet_job.CATEGORY_ID, jobeet_job.TYPE, jobeet_job.COMPANY, jobeet_job.LOGO, jobeet_job.URL, jobeet_job.POSITION, jobeet_job.LOCATION, jobeet_job.DESCRIPTION, jobeet_job.HOW_TO_APPLY, jobeet_job.TOKEN, jobeet_job.IS_PUBLIC, jobeet_job.IS_ACTIVATED, jobeet_job.EMAIL, jobeet_job.EXPIRES_AT, jobeet_job.CREATED_AT, jobeet_job.UPDATED_AT FROM `jobeet_job` WHERE 1<>1 AND jobeet_job.EXPIRES_AT>'2011-10-07 18:25:09' AND jobeet_job.IS_ACTIVATED=1 ORDER BY jobeet_job.CREATED_AT DESC LIMIT 20
time: 0.001 sec, slow: NO, mem: 8.3 MB, mempeak: 8.3 MB, memdelta: 0.0 B

SELECT jobeet_job.ID, jobeet_job.CATEGORY_ID, jobeet_job.TYPE, jobeet_job.COMPANY, jobeet_job.LOGO, jobeet_job.URL, jobeet_job.POSITION, jobeet_job.LOCATION, jobeet_job.DESCRIPTION, jobeet_job.HOW_TO_APPLY, jobeet_job.TOKEN, jobeet_job.IS_PUBLIC, jobeet_job.IS_ACTIVATED, jobeet_job.EMAIL, jobeet_job.EXPIRES_AT, jobeet_job.CREATED_AT, jobeet_job.UPDATED_AT FROM `jobeet_job` WHERE jobeet_job.ID IN (103)
time: 0.001 sec, slow: NO, mem: 8.8 MB, mempeak: 8.8 MB, memdelta: 0.0 B

Druga sprawa to, że podczas testów wyświetla się taki komunikat:
Call to undefined method BasesfGuardUser::setEmailAddress. Ale ja nigdzie w pliku testu, nie używam tej metody... Plik JobeetJobTest.php wygląda następująco:

Kod
<?php
include(dirname(__FILE__).'/../../bootstrap/Propel.php');

$t = new lime_test(3);

$t->comment('->getForLuceneQuery()');
$job = create_job(array('position' => 'foobar', 'is_activated' => false));
$job->save();
$jobs = JobeetJobPeer::getForLuceneQuery('position:foobar');
$t->is(count($jobs), 0, '::getForLuceneQuery() does not return non activated jobs');

$job = create_job(array('position' => 'foobar', 'is_activated' => true));
$job->save();
$jobs = JobeetJobPeer::getForLuceneQuery('position:foobar');
$t->is(count($jobs), 1, '::getForLuceneQuery() returns jobs matching the criteria');
$t->is($jobs[0]->getId(), $job->getId(), '::getForLuceneQuery() returns jobs matching the criteria');

$job->delete();
$jobs = JobeetJobPeer::getForLuceneQuery('position:foobar');
$t->is(count($jobs), 0, '::getForLuceneQuery() does not return deleted jobs');

function create_job($defaults = array())
{
  static $category = null;

  if (is_null($category))
  {
    $category = JobeetCategoryPeer::doSelectOne(new Criteria());
  }

  $job = new JobeetJob();
  $job->fromArray(array_merge(array(
    'category_id'  => $category->getId(),
    'company'      => 'Sensio Labs',
    'position'     => 'Senior Tester',
    'location'     => 'Paris, France',
    'description'  => 'Testing is fun',
    'how_to_apply' => 'Send e-Mail',
    'email'        => 'job@example.com',
    'token'        => rand(1111, 9999),
    'is_activated' => true,
  ), $defaults), BasePeer::TYPE_FIELDNAME);

  return $job;
}
?>


Już zacząłem kopiować wszystkie pliki dla pewności ale też nie działa. Czy ktoś z Was natknął się na podobny problem?
=========================================================
Problem rozwiązany... Dla potomnych, należy zmienić funkcję getLuceneIndexFile() i zamiast instrukcji:
Kod
return sfConfig::get('sf_data_dir').'/job.'.sfConfig::get('sf_environment').'.index';

wpisać:
Kod
return sfConfig::get('sf_data_dir').'/job.cli.index';
wikiania
W jaki sposób udało Ci się rozwiązać problem z komunikatem? U mnie podczas testowania jest cały czas:

  1. PHP Fatal error: Uncaught exception 'sfException' with message 'Call to undefined method BasesfGuardUser::setEmailAddress' in /var/www/jobeet/plugins/sfGuardPlugin/lib/model/om/BasesfGuardUser.php:1902
  2. Stack trace:
  3. #0 /var/www/jobeet/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/addon/sfPropelData.class.php(155): BasesfGuardUser->__call('setEmailAddress', Array)
  4. #1 /var/www/jobeet/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/addon/sfPropelData.class.php(155): sfGuardUser->setEmailAddress('admin@example.c...')
  5. #2 /var/www/jobeet/lib/vendor/symfony/lib/addon/sfData.class.php(58): sfPropelData->loadDataFromArray(Array)
  6. #3 /var/www/jobeet/lib/vendor/symfony/lib/addon/sfData.class.php(81): sfData->doLoadDataFromFile('/var/www/jobeet...')
  7. #4 /var/www/jobeet/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/addon/sfPropelData.class.php(52): sfData->doLoadData(Array)
  8. #5 /var/www/jobeet/test/bootstrap/Propel.php(10): sfPropelData->loadData('/var/www/jobeet...')
  9. #6 /var/www/jobeet/test/unit/model/JobeetJobTest.php(2): include( in /var/www/jobeet/plugins/sfGuardPlugin/lib/model/om/BasesfGuardUser.php on line 1902
  10.  

Valantir
Niestety nie pamiętam już, co poprawiałem aby takowy komunikat nie występował..., więc nie pomogę:/
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.