Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

We've moved the forum!

Please use forum.silverstripe.org for any new questions (announcement).
The forum archive will stick around, but will be read only.

You can also use our Slack channel or StackOverflow to ask for help.
Check out our community overview for more options to contribute.

General Questions /

General questions about getting started with SilverStripe that don't fit in any of the categories above.

Moderators: martimiz, Sean, Ed, biapar, Willr, Ingo, swaiba

compare two csv files in modeladmin interface


Go to End


2 Posts   851 Views

Avatar
sajok

Community Member, 82 Posts

6 October 2012 at 10:50am

Hello,

I know SS has the ability to import csv files and show results. In my case I want to compare two csv files and show the records that match. I assume this would need two upload fields and converting the csv data to arrays which need to be compared. If this is the best way, can someone give an example how to do that on silverstripe?

thanks in advance.

Avatar
Willr

Forum Moderator, 5523 Posts

9 October 2012 at 7:56pm

Edited: 09/10/2012 7:57pm

SilverStripe also has a Diff library bundled (framework/core/Diff.php) which is used for showing diffs between page versions (DataDifferencer), haven't used it too much so I personally can't help much but take a look to see if those classes can help.

http://api.silverstripe.org/3.0/framework/misc/DataDifferencer.html

The usage of that is something like

function getDifferences() {
$obj1 = DataObject::get_one('Member');
$obj2 = DataObject::get_one('Member');

return new DataDifferencer($obj1, $obj2);
}

// then in the template
<% with Differences %>
<% loop ChangedFields %>
<dt>$Title</dt>
<dd>$Diff</dd>
<% end_loop %>
<% end_with %>

How you get that displayed to the user depends on your use case. You could embed the template as a FormField within model admin or a separate controller would work.